前两天公司双十一做大促活动,半夜突然来了一大波流量,你在睡梦中就收到了一大波报警短信,仔细一看,说是服务器 CPU 使用率过高。你没敢半点马虎,揉了揉眼睛,带上眼镜,打开电脑,直接就登录到了 Linux 服务器。
登录成功之后,你发现服务器确实有些慢,就连输个命令都比平时慢了一拍。简单输入 top 命令之后,你根据参数看到系统的 CPU 使用率奇高无比,二话没说,你赶紧按照 CPU 使用率排序找出 CPU 使用率最高的那个进程。从排序结果可以确定,你昨天刚升级的服务 CPU 使用率居然高达 700%,根据直觉推断,你觉得肯定是昨天升级的服务并发处理逻辑有问题。
但是这个应用的负载特别大,业务逻辑也比较复杂,你一时也不知道到底是哪块逻辑出的问题。网络有人说,可以使用 gdb 来调试应用程序,可是 gdb 会把进程中断掉,直接影响线上的业务。也有人说可以使用 perf 工具来查,你照猫画虎,发现只是一些看起来像是 Linux 内核中的函数占用来比较多的 CPU。查了半天,最终发现还是没能弄明白到底是哪里出现的问题,留下的都是无奈和迷茫。
如果你对这样的场景感同身受,那我觉得我们可以详细聊聊。作为一个程序员,说实话,我觉得和 Linux 打交道,在服务器上分析系统性能情况是我们每一个后端程序员都无法避开的事情。
有人说,这事是运维的工作范畴,我对这话一点都不认同。一个优秀的程序员,不应该在这事上给自己设边界,更何况我们有的人还喜欢在 Linux 上做开发呢,如果连这点事情都整不明白,那我确信,你肯定也搞不懂高并发、分布式等相关的知识,因为这些内容都是一脉相承的。
一直以来,我都在云计算领域工作。对于服务器性能的关注,可以追溯到我刚参加工作那会儿。同样,我也遇到过上面例子中的那个场景,当时,我同样是一头雾水,两眼发懵,甚至还被 Leader 痛批。
在经受了这样的挫折之后,我知耻而后勇,阅读了几本经典书籍,学习了大量性能优化的思路和方法,这期间尝试了大量的 Linux 性能工具。在不断的实践和总结后,我终于知道,怎么 把观察到的性能问题跟系统原理关联起来,特别是把系统从应用程序、库函数、系统调用、再到内核和硬件等不同的层级贯穿起来。
为了让你对性能有个全面的认识,我精心绘制了一张思维导图,里面涵盖了大部分性能分析和优化都会包含的知识。
今天我就想通过这个专栏,把我的学习经验全部分享给你,带着你吃透 Linux 性能优化这事。
再回来说怎么学这事,我觉得,对于我们大多数人来说,最好的学习方式一定是带着问题学习,而不是先去啃那几本厚厚的原理书籍,因为那样很容易把自己的信心压垮。
我认为,只要你了解少数几个系统组件的基本原理和协作方式,掌握基本的性能指标和工具,学习实际工作中性能优化的常用技巧,你就已经可以准确分析和优化大多数的性能问题了。在这个认知和基础上,再反过来去阅读那些经典的操作系统或者其它图书,你才能事半功倍。
所以,这个专栏的的交付思路也是这样,我会 以案例驱动的思路,给你讲解 Linux 性能的基本指标、工具,以及相应的观测、分析和调优方法,具体你可以参看目录。
我是倪朋飞,微软 Azure 资深工程师,主要负责开源容器编排系统 Kubernetes 在 Azure 的落地实践。之前先后任职于盛大云和腾讯,这十年来,我一直在云计算领域工作,主攻 IaaS 和容器技术,所以自己也对 Linux 性能优化这套东西有一些自己的思考和沉淀。
1、 掌握 Linux 必备的基本原理 以及 Linux 系统必懂的性能指标(CPU、磁盘 I/O、内存 以及 网络)和性能工具。
Linux 性能工具图谱(图片来自 brendangregg.com)
2、结合实际案例分析,让你在遇到资源瓶颈时不再束手无策,学会观测和准确定位、快速分析并高效优化,具备高手解决性能优化问题的思路和全局观。
3、5 个综合实战模块 还原真实的工作场景,结合开源项目、框架或者系统设计的案例,手把手带你在“高级战场”演练, 目的是让你把之前学到的所有知识融会贯通,马上能将所学应用在工作当中。
4、针对订阅用户会设置 答疑篇章,我相信在学习完每一个模块之后,你都会有很多的问题,在这里,我会拿出提问频次较高的问题 一对一给你系统解答。
福利一:限时优惠价¥68,~~ 原价¥99~~,12 月 1 日恢复原价。福利二:邀请好友通过你的分享海报订阅,你可获得 18 元 现金返现,同时你的好友还会获得 6 元 的返现。
扫描下图二维码,立即试读或订阅专栏。
扫码试看开篇词
如果你也想更快,更轻松的学习 Linux 性能优化 点击阅读原文学起来吧!