Linux 内核复杂又难懂,到底有啥用?
共 2340字,需浏览 5分钟
·
2020-08-21 04:13
但凡你经历过公司业务迅速增长的阶段,就一定遇到过服务稳定性的挑战,比如:TCP 重传该怎么分析,如何在不打断运行任务的情况下排查内存泄漏问题,怎样快速解决 CPU sys 利⽤率过⾼等等。
以上面提到的 TCP 重传为例,服务器上一般都会有 TCP 重传率的监控,如图所示:
像上图中这么高的 TCP 重传率,必然会导致系统 QPS 减小。然而,当你真正去排查时,会发现根本不知从哪里入手。因为网络数据量非常大,只记录 TCP 头部信息也会产生很大存储开销,所以发生重传的现场信息无法被记录下来。
其实,定位类似 TCP 重传这样复杂的稳定性问题,不仅要从开发⼈员的视⻆分析,还要更多从系统、内核的视角出发,这样你才能追本溯源、一劳永逸地解决问题。
而大家之所以觉得这些问题难,本质上还是对 Linux 内核理解不到位。
比如,我接触过的业务开发者,基本都被业务的性能毛刺困扰过,但大多数人只能分析到是哪些系统调用引起的毛刺,而业务专家却可以深入底层,看到引发业务毛刺的系统资源。再比如,当发生 TCP 重传时,有人可以从 tcpdump 里的信息看出是哪个 TCP 连接进行重传,高手们却可以通过这些信息看到为什么会发生重传。
能深入到 Linux 内核分析问题的人,看问题能直击本质,定位、分析问题的能力都更强,往往能解决别人解决不了的问题。
然而,在互联网公司普遍“996”的大环境下,大部分做应用的开发者,大都将精力集中在业务代码的优化和调配上,忽略了对 Linux 内核的学习。而且,这部分知识本身就很复杂,所以学习成本也比较高。
事实上,如果你不是内核开发者,没有必要去搞懂它的每个细节,掌握它的每个机制,只要能通过掌握 Linux 内核知识,解决实际应用层的问题就够了,极客时间刚上线的《Linux 内核技术实战课》正好满足大部分开发者这样的需求。
专栏是从生产环境中 4 类典型问题(Page Cache 管理、内存泄漏、TCP 重传、内核态 CPU 利用率飙高)入手,带你了解:应用程序是怎样跟系统资源打交道的;如何选择业务类型的配置更好;棘手问题出现时该如何一步步排查等等,让 Linux 内核更好地服务你的应用程序。
?扫码免费试读
结算输入优惠口令「gogolinux」
再减 5 元,到手仅 ¥50
仅限「前 100 人」有效
专栏作者是谁?
这门课的作者是邵亚方,他是前蘑菇街技术专家,Linux Kernel 活跃贡献者。他在 Linux 内核领域深耕了 10 余年,先后在华为、蘑菇街、Juniper Networks 等知名互联网企业从事内核研发工作。
他擅长从 Linux 系统内核层⾯来分析解决实际疑难问题、提高业务性能。在华为和蘑菇街,经历了公司从 0 到 1 切换 Linux 或开发部署私有云的过程,通过改造 Linux 内核保障了业务的平滑切换、稳定性和性能;在 Juniper Networks 则一直致力于提升网络性能,保障业务网络的稳定性,经验可以说相当丰富。
目前亚方主要活跃在 Linux 内核的内存管理子系统(linux-mm),如果你有关注这个邮件列表的话,应该经常能看到他的名字。
他是如何讲解 Linux 内核的?
在专栏中,他结合自己的工作经验,总结出了开发者在生产环境中经常会遇到的四类问题:Page Cache 管理、内存泄漏、TCP 重传、内核态 CPU 利用率飙高。每类问题对应一个模块,按照基础篇、案例篇和分析篇的方式来呈现。
1、Page Cache 管理模块,带你了解如何更好地利用 Page Cache 来减少无谓的 I/O 开销,Page Cache 管理不当会引起的哪些问题,以及怎样分析和解决。
2、内存泄漏模块,重点分析应用程序是如何从系统中申请和释放内存。通过内存泄露这类案例,带你了解应用程序使用内存的细节,以及由内存使用不当而引发问题的解决方案。
3、TCP 重传模块,为你讲解 TCP 连接的建立、传输和断开的过程,分析这个过程究竟会受哪些配置项的影响,以及配置不当会引起的网络问题。从 TCP 重传这类具体案例出发,带你掌握必要的网络细节知识,以及遇到相关问题时,你该如何去分析和解决。
4、内核态 CPU 利用率飙高模块,带你分析应用程序该如何高效使用 CPU,以及哪些情况会导致 CPU 使用低效,比如内核态 CPU 利用率过高等。针对内核态 CPU 利用率高的这个案例,侧重讲解哪些 Linux 内核的特性或系统配置项会引起这种问题,以及怎样分析和解决。
在每个模块的最后,亚方都会总结这些常见问题的一般分析思路,让你在面对同类型问题时有一个大致的分析方向。
Linux 底层知识的学习并不是一蹴而就的,但跟邵亚方学完这个专栏,我相信你不仅可以很好地掌握必备的 Linux 内核基础知识,也能学到很多解决实际问题的技巧,让 Linux 内核真正有效服务于你的应用程序。
订阅福利
早鸟 + 口令「gogolinux」到手仅 ¥50,
原价 ¥68,仅限「前 100 人」有效。
订阅后生成海报发给好友,
每成功邀请 1 位,得 ¥18 返现。
?扫码免费试读
温馨提示:
订阅后可通过「极客时间 App」或「极客时间小程序」我的-已购,学习已订阅的专栏。
?点击「阅读原文」,
输入优惠口令「gogolinux」,
以最低价 ¥50 入手,仅限前 100 人。