难搞的 Linux 性能问题,如何从内核层面解决?丨极客时间

2020 年 8 月 25 日 InfoQ

但凡你经历过公司业务迅速增长的阶段,就一定遇到过服务稳定性的挑战,比如:TCP 重传该怎么分析,如何在不打断运行任务的情况下排查内存泄漏问题,怎样快速解决 CPU sys 利⽤率过⾼等等。

以上面提到的 TCP 重传为例,服务器上一般都会有 TCP 重传率的监控,如图所示:

像上图中这么高的 TCP 重传率,必然会导致系统 QPS 减小。然而,当你真正去排查时,会发现根本不知从哪里入手。因为网络数据量非常大,只记录 TCP 头部信息也会产生很大存储开销,所以发生重传的现场信息无法被记录下来。

其实,定位类似 TCP 重传这样复杂的稳定性问题,不仅要从开发⼈员的视⻆分析,还要更多从系统、内核的视角出发,这样你才能追本溯源、一劳永逸地解决问题。

而大家之所以觉得这些问题难,本质上还是对 Linux 内核理解不到位。

比如,我接触过的业务开发者,基本都被业务的性能毛刺困扰过,但大多数人只能分析到是哪些系统调用引起的毛刺,而业务专家却可以深入底层,看到引发业务毛刺的系统资源。再比如,当发生 TCP 重传时,有人可以从 tcpdump 里的信息看出是哪个 TCP 连接进行重传,高手们却可以通过这些信息看到为什么会发生重传。

能深入到 Linux 内核分析问题的人,看问题能直击本质,定位、分析问题的能力都更强,往往能解决别人解决不了的问题。

然而,在互联网公司普遍“996”的大环境下,大部分做应用的开发者,大都将精力集中在业务代码的优化和调配上,忽略了对 Linux 内核的学习。而且,这部分知识本身就很复杂,所以学习成本也比较高。

事实上,如果你不是内核开发者,没有必要去搞懂它的每个细节,掌握它的每个机制,只要能通过掌握 Linux 内核知识,解决实际应用层的问题就够了,这也是我和极客时间合作,开设《Linux 内核技术实战课》专栏的初衷,希望能把自己多年的 Linux 内核学习和实践经验,通过“解决问题,满足需求”的方式传递给你。

在专栏中,我从生产环境中 4 类典型问题(Page Cache 管理、内存泄漏、TCP 重传、内核态 CPU 利用率飙高)入手,带你了解:应用程序是怎样跟系统资源打交道的;如何选择业务类型的配置更好;棘手问题出现时该如何一步步排查等等,让 Linux 内核更好地服务你的应用程序。

👆扫码免 费试读

结算时,输入优惠口令「gogolinux」

再减 5 元,到手仅 ¥50

仅限「前 200 人」有效

我是谁?

我是邵亚方,前蘑菇街技术专家,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,仅限「前 200 人」有效。

订阅后生成海报发给好友,

每成功邀 1 位,得 ¥18 返现

👆扫码免费试读

温馨提示:订阅后可通过「极客时间 App」或「极客时间小程序」我的 - 已购,学习已订阅的专栏。

👇点击「阅读原文」,输入优惠口令「gogolinux」,以最低价 ¥50 入手,仅限前 200 人

登录查看更多
0

相关内容

Linux 是一系列类 Unix 计算机操作系统的统称。该操作系统的核心为 Linux 内核。Linux 操作系统也是软件和开放源代码发展中最著名的例子之一。
【经典书】C++编程:从问题分析到程序设计,1491页pdf
专知会员服务
58+阅读 · 2020年8月11日
【2020新书】高级Python编程,620页pdf
专知会员服务
232+阅读 · 2020年7月31日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
105+阅读 · 2020年5月3日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
DLI精选课程 | 用 CUDA C/C++ 优化 GPU 显存(内文有礼)
英伟达NVIDIA中国
8+阅读 · 2019年5月10日
移动开发的下半场,iOS开发者应该学什么?
前端之巅
3+阅读 · 2019年4月17日
如何快速入门TensorFlow ?丨极客时间
InfoQ
4+阅读 · 2019年1月8日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Python 如何快速入门?
大数据技术
11+阅读 · 2018年4月9日
Arxiv
11+阅读 · 2019年6月19日
Arxiv
3+阅读 · 2018年6月14日
Arxiv
4+阅读 · 2018年1月19日
VIP会员
相关资讯
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
DLI精选课程 | 用 CUDA C/C++ 优化 GPU 显存(内文有礼)
英伟达NVIDIA中国
8+阅读 · 2019年5月10日
移动开发的下半场,iOS开发者应该学什么?
前端之巅
3+阅读 · 2019年4月17日
如何快速入门TensorFlow ?丨极客时间
InfoQ
4+阅读 · 2019年1月8日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Python 如何快速入门?
大数据技术
11+阅读 · 2018年4月9日
Top
微信扫码咨询专知VIP会员