开篇词 | 别再让Linux性能问题成为你的绊脚石
倪朋飞
讲述:冯永吉大小:3.27M时长:07:09
该思维导图由 AI 生成,仅供参考
你好,我是倪朋飞,一个云计算老兵,Kubernetes 项目维护者,主要负责开源容器编排系统 Kubernetes 在 Azure 的落地实践。
一直以来,我都在云计算领域工作。对于服务器性能的关注,可以追溯到我刚参加工作那会儿。为什么那么早就开始探索性能问题呢?其实是源于一次我永远都忘不了的“事故”。
那会儿我在盛大云工作,忙活了大半夜把产品发布上线后,刚刚躺下打算休息,却突然收到大量的告警。匆忙爬起来登录到服务器之后,我发现有一些系统进程的 CPU 使用率高达 100%。
当时我完全是两眼一抹黑,可以说是只能看到症状,却完全不知道该从哪儿下手去排查和解决它。直到最后,我也没能想到好办法,这次发布也成了我心中之痛。
从那之后,我开始到处查看各种相关书籍,从操作系统原理、到 Linux 内核,再到硬件驱动程序等等。可是,学了那么多知识之后,我还是不能很快解决类似的性能问题。
于是,我又通过网络搜索,或者请教公司的技术大拿,学习了大量性能优化的思路和方法,这期间尝试了大量的 Linux 性能工具。在不断的实践和总结后,我终于知道,怎么把观察到的性能问题跟系统原理关联起来,特别是把系统从应用程序、库函数、系统调用、再到内核和硬件等不同的层级贯穿起来。
这段学习可以算得上是我的“黑暗”经历了。我想,不仅是我一个人,很多人应该都有过这样的挫折。比如说:
流量高峰期,服务器 CPU 使用率过高报警,你登录 Linux 上去 top 完之后,却不知道怎么进一步定位,到底是系统 CPU 资源太少,还是程序并发部分写的有问题?
系统并没有跑什么吃内存的程序,但是敲完 free 命令之后,却发现系统已经没有什么内存了,那到底是哪里占用了内存?为什么?
一大早就收到 Zabbix 告警,你发现某台存放监控数据的数据库主机的 iowait 较高,这个时候该怎么办?
这些问题或者场景,你肯定或多或少都遇到过。
实际上,性能优化一直都是大多数软件工程师头上的“紧箍咒”,甚至许多工作多年的资深工程师,也无法准确地分析出线上的很多性能问题。
性能问题为什么这么难呢?我觉得主要是因为性能优化是个系统工程,总是牵一发而动全身。它涉及了从程序设计、算法分析、编程语言,再到系统、存储、网络等各种底层基础设施的方方面面。每一个组件都有可能出问题,而且很有可能多个组件同时出问题。
毫无疑问,性能优化是软件系统中最有挑战的工作之一,但是换个角度看,它也是最考验体现你综合能力的工作之一。如果说你能把性能优化的各个关键点吃透,那我可以肯定地说,你已经是一个非常优秀的软件工程师了。
那怎样才能掌握这个技能呢?你可以像我前面说的那样,花大量的时间和精力去钻研,从内功到实战一一苦练。当然,那样可行,但也会走很多弯路,而且可能你啃了很多大块头的书,终于拿下了最难的底层体系,却因为缺乏实战经验,在实际开发工作中仍然没有头绪。
其实,对于我们大多数人来说,最好的学习方式一定是带着问题学习,而不是先去啃那几本厚厚的原理书籍,这样很容易把自己的信心压垮。
我认为,学习要会抓重点。其实只要你了解少数几个系统组件的基本原理和协作方式,掌握基本的性能指标和工具,学会实际工作中性能优化的常用技巧,你就已经可以准确分析和优化大多数的性能问题了。在这个认知的基础上,再反过来去阅读那些经典的操作系统或者其它图书,你才能事半功倍。
所以,在这个专栏里,我会以案例驱动的思路,给你讲解 Linux 性能的基本指标、工具,以及相应的观测、分析和调优方法。
具体来看,我会分为 5 个模块。前 4 个模块我会从资源使用的视角出发,带你分析各种 Linux 资源可能会碰到的性能问题,包括 CPU 性能、磁盘 I/O 性能、内存性能以及网络性能。每个模块还由浅入深划分为四个不同的篇章。
基础篇,介绍 Linux 必备的基本原理以及对应的性能指标和性能工具。比如怎么理解平均负载,怎么理解上下文切换,Linux 内存的工作原理等等。
案例篇,这里我会通过模拟案例,帮你分析高手在遇到资源瓶颈时,是如何观测、定位、分析并优化这些性能问题的。
套路篇,在理解了基础,亲身体验了模拟案例之后,我会帮你梳理出排查问题的整体思路,也就是检查性能问题的一般步骤,这样,以后你遇到问题,就可以按照这样的路子来。
答疑篇,我相信在学习完每一个模块之后,你都会有很多的问题,在答疑篇里,我会拿出提问频次较高的问题给你系统解答。
第 5 个综合实战模块,我将为你还原真实的工作场景,手把手带你在“高级战场”中演练,这样你能把前面学到的所有知识融会贯通,并且看完专栏,马上就能用在工作中。
整个专栏,我会把内容尽量写得通俗易懂,并帮你划出重点、理出知识脉络,再通过案例分析和套路总结,让你学得更透、用得更熟。
明天就要正式开课了,开始之前,我要把何炅说过的那句我特别认同的鸡汤送给你,“想要得到你就要学会付出,要付出还要坚持;如果你真的觉得很难,那你就放弃,如果你放弃了就不要抱怨。人生就是这样,世界是平衡的,每个人都是通过自己的努力,去决定自己生活的样子。”
不为别的,就希望你能和我坚持下去,一直到最后一篇文章。这中间,有想不明白的地方,你要先自己多琢磨几次;还是不懂的,你可以在留言区找我问;有需要总结提炼的知识点,你也要自己多下笔。你还可以写下自己的经历,记录你的分析步骤和思路,我都会及时回复你。
最后,你可以在留言区给自己立个 Flag,哪怕只是在留言区打卡你的学习天数,我相信都是会有效果的。3 个月后,我们一起再来验收。
总之,让我们一起携手,为你交付“Linux 性能优化”这个大技能!
Linux 知识地图 2.0 典藏版,现货发售 2000 份,把 5 米长的图谱装进背包,1 分钟定位 80% 的高频问题。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Linux性能优化一直是软件工程师头上的“紧箍咒”,但本文作者倪朋飞通过自身经历,分享了对Linux性能问题的深刻思考和解决方法。作者以案例驱动的思路,分为5个模块,从资源使用的视角出发,带领读者分析CPU性能、磁盘I/O性能、内存性能和网络性能等问题。每个模块还划分为基础篇、案例篇、套路篇和答疑篇,帮助读者掌握基本原理、性能指标和工具,学会实际工作中的性能优化技巧。最后,作者还将通过综合实战模块,还原真实的工作场景,手把手带领读者在“高级战场”中演练,让读者能够将所学知识融会贯通,并且能够立即应用于工作中。整个专栏内容通俗易懂,通过案例分析和套路总结,让读者学得更透、用得更熟。作者鼓励读者带着问题学习,并在留言区互动交流,共同努力学习,坚持不懈。通过本文,读者可以快速了解Linux性能优化的基本思路和方法,为提升自身综合能力打下坚实基础。
2018-11-19175人觉得很赞给文章提建议
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Linux 性能优化实战》,新⼈⾸单¥68
《Linux 性能优化实战》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(838)
- 最新
- 精选
- 小盖5年前,我还是一名程序员的时候,就经常受到Linux性能问题的困扰。因为生产环境中,一遇到流量高峰,或者不知道其他什么原因,总是会有些问题,比如CPU使用率高,或者内容吃紧或者IO性能上不去等等。 那这个时候怎么办呢?只能上去看看到底是哪里的问题,首先,大部分问题,都会先排除机器或者操作系统层面的问题,因为这些在上线之初基本都已经验证没问题了,并且这种问题,到开发这边,基本就是说是程序的问题了。 比如CPU的,一般就会定位到死锁或者并发代码的问题,那这块怎么分析?我当时其实是不太懂的,只是见厉害的人随便敲一些命令,然后也不知道嘴里念叨着什么,然后过一会,他就说大概是哪里的问题,然后我一看,果然是,然后献出了膝盖。 现在,我开始做教育,就和朋飞(朋飞是非常资深的Linux玩家)一起策划了这个专栏,这个专栏一个是献给和我当年一样懵懂的朋友,也做给现在的自己。 review稿件的时候,我觉得这里我能懂了,也很自豪,因为老师写的浅显易懂,写的通透啊。 ps:这个专栏里,有很多案例,这些案例都非常棒,作者也花了很多精力来做这事。
作者回复: 感谢郭总支持!
2018-11-192176 - XD1打卡 希望能坚持学完这四个月,然后,我想涨工资😉
作者回复: 加油!
2018-11-193111 - shirly打卡,盛大云是我第一份工作,曾经还是懵懵懂懂的小姑娘,到今天一边挤奶边充电,满满的苍伤感啊。还是要保持积极学习的状态来影响下一代,可以看出作者花了不少心思在这个专栏下,一定不辜负老同事的付出,好好学习天天天天向上,自勉
作者回复: 😊
2018-11-2117 - Carlos看到这个专栏,我毫不犹豫的就订上了,希望可以解决我长久以来的疑惑。没有经历过,永远不知道这种问题发生时有多痛苦呀
作者回复: 学完这个专栏就轻松了
2018-11-1912 - Q看完作者的介绍,感觉很靠谱!我以前也是去啃大部头,但总觉得看得不透,很难和实际工作做结合,而且市面上介绍性能优化这块的书寥寥无几,大多只是谈工具,不谈方法和思路,更不要说结合实际案例去介绍性能优化。我是一名系统工程师,每天都和Linux 系统打交道,给开发提供支持。希望能学好这门综合性质的课程!
作者回复: 对的,讲工具的书比较多,但还需要串起来才能解决实际的问题
2018-11-1911 - Cordova刚来北京,为了稳住脚立马进了一家团队不大的软件公司,发现来了之后不仅要开发,还要做运维,虽然公司项目日活还不错,但是由于项目有三年以上了,却还是简单依靠nginx做负载,当时就查了cpu,发现mysql占cpu200%-300% 我的天… 立马把mysql执行优化一下算是稳下来了… 后面还做了项目日志的切割,想想一个日志1-3个G的文件流不释放、也挺可怕的… 很幸运碰到倪老师这门课程,虽然已经更新了三十多讲,但是只要能碰到,就已经很幸运了!希望后面能跟随倪老师思路,好好学习,好好进步,好好解决项目的各种问题!也希望能与各位好好交流、共同进步!
作者回复: 👍
2019-06-027 - 吕栋如何理清思路?发现问题后该知道下一步该做什么!才是最重要的,希望能得到答案!!!
作者回复: 这就是专栏要教的
2018-11-194 - ninuxer打卡Day1,看过作者关于k8s的一些博客,希望能跟上大佬的步伐,从底层开始,夯实基础~
作者回复: 加油!
2018-11-193 - kevenxi以前做程序员,从来没有关注过性能问题,一是系统还不太复杂,大不了重启一次;二是似乎大多数身边程序员都不太关注底层问题,索性就一起懵逼了。现在不同了,系统部署,性能优化等技能成了岗位基本要求,linux操作不能止步简单命令+百度了,而要懂系统原理、熟练使用工具,坚持学!
作者回复: 加油👍
2019-06-242 - 深蓝即是黑大半夜看第一篇,我还没工作但已经大学毕业三年,喜欢上了运维一直在学习,希望可以通过自己努力找到自己喜欢的运维工作
作者回复: 加油
2019-02-2722
收起评论