Linux性能优化实战
倪朋飞
微软资深工程师,Kubernetes项目维护者
立即订阅
23395 人已学习
课程目录
已完结 64 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (2讲)
开篇词 | 别再让Linux性能问题成为你的绊脚石
免费
01 | 如何学习Linux性能优化?
CPU 性能篇 (13讲)
02 | 基础篇:到底应该怎么理解“平均负载”?
03 | 基础篇:经常说的 CPU 上下文切换是什么意思?(上)
04 | 基础篇:经常说的 CPU 上下文切换是什么意思?(下)
05 | 基础篇:某个应用的CPU使用率居然达到100%,我该怎么办?
06 | 案例篇:系统的 CPU 使用率很高,但为啥却找不到高 CPU 的应用?
07 | 案例篇:系统中出现大量不可中断进程和僵尸进程怎么办?(上)
08 | 案例篇:系统中出现大量不可中断进程和僵尸进程怎么办?(下)
09 | 基础篇:怎么理解Linux软中断?
10 | 案例篇:系统的软中断CPU使用率升高,我该怎么办?
11 | 套路篇:如何迅速分析出系统CPU的瓶颈在哪里?
12 | 套路篇:CPU 性能优化的几个思路
13 | 答疑(一):无法模拟出 RES 中断的问题,怎么办?
14 | 答疑(二):如何用perf工具分析Java程序?
内存性能篇 (8讲)
15 | 基础篇:Linux内存是怎么工作的?
16 | 基础篇:怎么理解内存中的Buffer和Cache?
17 | 案例篇:如何利用系统缓存优化程序的运行效率?
18 | 案例篇:内存泄漏了,我该如何定位和处理?
19 | 案例篇:为什么系统的Swap变高了(上)
20 | 案例篇:为什么系统的Swap变高了?(下)
21 | 套路篇:如何“快准狠”找到系统内存的问题?
22 | 答疑(三):文件系统与磁盘的区别是什么?
I/O 性能篇 (10讲)
23 | 基础篇:Linux 文件系统是怎么工作的?
24 | 基础篇:Linux 磁盘I/O是怎么工作的(上)
25 | 基础篇:Linux 磁盘I/O是怎么工作的(下)
26 | 案例篇:如何找出狂打日志的“内鬼”?
27 | 案例篇:为什么我的磁盘I/O延迟很高?
28 | 案例篇:一个SQL查询要15秒,这是怎么回事?
29 | 案例篇:Redis响应严重延迟,如何解决?
30 | 套路篇:如何迅速分析出系统I/O的瓶颈在哪里?
31 | 套路篇:磁盘 I/O 性能优化的几个思路
32 | 答疑(四):阻塞、非阻塞 I/O 与同步、异步 I/O 的区别和联系
网络性能篇 (13讲)
33 | 关于 Linux 网络,你必须知道这些(上)
34 | 关于 Linux 网络,你必须知道这些(下)
35 | 基础篇:C10K 和 C1000K 回顾
36 | 套路篇:怎么评估系统的网络性能?
37 | 案例篇:DNS 解析时快时慢,我该怎么办?
38 | 案例篇:怎么使用 tcpdump 和 Wireshark 分析网络流量?
39 | 案例篇:怎么缓解 DDoS 攻击带来的性能下降问题?
40 | 案例篇:网络请求延迟变大了,我该怎么办?
41 | 案例篇:如何优化 NAT 性能?(上)
42 | 案例篇:如何优化 NAT 性能?(下)
43 | 套路篇:网络性能优化的几个思路(上)
44 | 套路篇:网络性能优化的几个思路(下)
45 | 答疑(五):网络收发过程中,缓冲区位置在哪里?
综合实战篇 (13讲)
46 | 案例篇:为什么应用容器化后,启动慢了很多?
47 | 案例篇:服务器总是时不时丢包,我该怎么办?(上)
48 | 案例篇:服务器总是时不时丢包,我该怎么办?(下)
49 | 案例篇:内核线程 CPU 利用率太高,我该怎么办?
50 | 案例篇:动态追踪怎么用?(上)
51 | 案例篇:动态追踪怎么用?(下)
52 | 案例篇:服务吞吐量下降很厉害,怎么分析?
53 | 套路篇:系统监控的综合思路
54 | 套路篇:应用监控的一般思路
55 | 套路篇:分析性能问题的一般步骤
56 | 套路篇:优化性能问题的一般方法
57 | 套路篇:Linux 性能工具速查
58 | 答疑(六):容器冷启动如何性能分析?
加餐篇 (4讲)
加餐(一) | 书单推荐:性能优化和Linux 系统原理
加餐(二) | 书单推荐:网络原理和 Linux 内核实现
用户故事 | “半路出家 ”,也要顺利拿下性能优化!
用户故事 | 运维和开发工程师们怎么说?
结束语 (1讲)
结束语 | 愿你攻克性能难关
Linux性能优化实战
登录|注册

开篇词 | 别再让Linux性能问题成为你的绊脚石

倪朋飞 2018-11-19
00:00
07:08
讲述:冯永吉 大小:3.27M
你好,我是倪朋飞,微软 Azure 的资深工程师,同时也是 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/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Linux性能优化实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(699)

  • 臧天霸
    打卡!40了,学点年轻时候没搞明白的知识,坚持下去,改变自己,再老也不迟
    2018-11-20
    1
    223
  • 101010 == 42
    D1打卡
    希望能坚持学完这四个月,然后,我想涨工资😉

    作者回复: 加油!

    2018-11-19
    96
  • 郭蕾
    5年前,我还是一名程序员的时候,就经常受到Linux性能问题的困扰。因为生产环境中,一遇到流量高峰,或者不知道其他什么原因,总是会有些问题,比如CPU使用率高,或者内容吃紧或者IO性能上不去等等。

    那这个时候怎么办呢?只能上去看看到底是哪里的问题,首先,大部分问题,都会先排除机器或者操作系统层面的问题,因为这些在上线之初基本都已经验证没问题了,并且这种问题,到开发这边,基本就是说是程序的问题了。

    比如CPU的,一般就会定位到死锁或者并发代码的问题,那这块怎么分析?我当时其实是不太懂的,只是见厉害的人随便敲一些命令,然后也不知道嘴里念叨着什么,然后过一会,他就说大概是哪里的问题,然后我一看,果然是,然后献出了膝盖。

    现在,我开始做教育,就和朋飞(朋飞是非常资深的Linux玩家)一起策划了这个专栏,这个专栏一个是献给和我当年一样懵懂的朋友,也做给现在的自己。

    review稿件的时候,我觉得这里我能懂了,也很自豪,因为老师写的浅显易懂,写的通透啊。

    ps:这个专栏里,有很多案例,这些案例都非常棒,作者也花了很多精力来做这事。

    作者回复: 感谢郭总支持!

    2018-11-19
    85
  • 祥伟
    第一次尝试,竟然忘记使用新人卷。。。
    2018-11-19
    23
  • 动感超人
    要做高手,从性能入手
    2018-11-19
    15
  • hua168
    希望大神讲得深入些,我们都有运维基础和工作经验……linux性能优化方面的书太少了,红帽到有,但讲得一般!期待中……
    2018-11-19
    12
  • Carlos
    看到这个专栏,我毫不犹豫的就订上了,希望可以解决我长久以来的疑惑。没有经历过,永远不知道这种问题发生时有多痛苦呀

    作者回复: 学完这个专栏就轻松了

    2018-11-19
    9
  • 小美
    打卡!!!
    2018-11-21
    7
  • Q
    看完作者的介绍,感觉很靠谱!我以前也是去啃大部头,但总觉得看得不透,很难和实际工作做结合,而且市面上介绍性能优化这块的书寥寥无几,大多只是谈工具,不谈方法和思路,更不要说结合实际案例去介绍性能优化。我是一名系统工程师,每天都和Linux 系统打交道,给开发提供支持。希望能学好这门综合性质的课程!

    作者回复: 对的,讲工具的书比较多,但还需要串起来才能解决实际的问题

    2018-11-19
    6
  • WL
    我要加油, 认认真真把这个专栏读懂, 我要涨工资
    2018-11-23
    5
  • 赵赵
    我就会点性能理论,上次突然领导让我做性能,然后就是网上恶补,在测试的过程中我最苦恼的是,我不知道CPU,内存,io等使用率达到多少就算有问题,单个接口在高并发下响应时间,吞吐量等这些值的标准,另外还有一个问题就是测试过程中一天每次压响应时间,吞吐量差别还挺大,一次不如一次的值,还有个问题就是产出报告的时候怎么才能给别人答复说,没问题能支持多少并发,这些疑问一直盘旋,我头大死了,老师您能指个方向吗?ps:我上次草草了事了
    2018-11-22
    5
  • shirly
    打卡,盛大云是我第一份工作,曾经还是懵懵懂懂的小姑娘,到今天一边挤奶边充电,满满的苍伤感啊。还是要保持积极学习的状态来影响下一代,可以看出作者花了不少心思在这个专栏下,一定不辜负老同事的付出,好好学习天天天天向上,自勉

    作者回复: 😊

    2018-11-21
    4
  • 吕栋
    如何理清思路?发现问题后该知道下一步该做什么!才是最重要的,希望能得到答案!!!

    作者回复: 这就是专栏要教的

    2018-11-19
    4
  • :(){ :|: };:
    应届毕业生,刚工作4个月,虽然当时应聘是Linux相关、没想到负责维护产品是Windows服务器.
    不过还是放不下一颗爱玩Linux的心~相信原理都是融会贯通的.
    2018-11-19
    1
    4
  • DUO
    运维工程师一枚,日常维护服务器,希望能有所收获
    2018-11-19
    4
  • 。。。
    最近正好需要 希望三个月下来能 游刃有余
    2018-11-19
    4
  • 子非魚
    性能问题已经成了我提升技术能力的瓶颈,看了课程目录就毫不犹豫的订阅了。希望跟着大家一起学习,突破瓶颈!
    2018-11-19
    4
  • 籽籽
    微软也开发linux吗? 怎么觉得在毁三观呢? linux服务器出问题给微软打电话的话,有人管吗? 给钱找哪个部门合适?
    2018-11-20
    3
  • 每天晒白牙
    立flag,跟着学
    2018-11-19
    3
  • Adam
    运维一枚,希望学习到老师的一些性能优化的思路 。
    2018-11-19
    3
收起评论
99+
99+
返回
顶部