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性能优化实战
登录|注册

01 | 如何学习Linux性能优化?

倪朋飞 2018-11-21
你好,我是倪朋飞。
你是否也曾跟我一样,看了很多书、学了很多 Linux 性能工具,但在面对 Linux 性能问题时,还是束手无策?实际上,性能分析和优化始终是大多数软件工程师的一个痛点。但是,面对难题,我们真的就无解了吗?
固然,性能问题的复杂性增加了学习难度,但这并不能成为我们进阶路上的“拦路虎”。在我看来,大多数人对性能问题“投降”,原因可能只有两个。
一个是你没找到有效的方法学原理,一听到“系统”、“底层”这些词就发怵,觉得东西太难,自己一定学不会,自然也就无法深入学下去,从而不能建立起性能的全局观。
再一个就是,你看到性能问题的根源太复杂,既不懂怎么去分析,也不能抽丝剥茧找到瓶颈。
你可能会想,反正程序出了问题,上网查就是了,用别人的方法,囫囵吞枣地多试几次,有可能就解决了。于是,你懒得深究这些方法为啥有效,更不知道为什么,很多方法在别人的环境有效,到你这儿就不行了。
所以,相同的错误重复在犯,相同的状况也是重复出现。
其实,性能问题并没有你想像得那么难,只要你理解了应用程序和系统的少数几个基本原理,再进行大量的实战练习,建立起整体性能的全局观,大多数性能问题的优化就会水到渠成。
我见过很多工程师,在分析应用程序所使用的第三方组件的性能时,并不熟悉这些组件所用的编程语言,却依然可以分析出线上问题的根源,并能通过一些方法进行优化,比如修改应用程序对它们的调用逻辑,或者调整组件的配置选项等。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Linux性能优化实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(266)

  • forever
    我遇到性能瓶颈的排查思路

    有监控的情况下,首先去看看监控大盘,看看有没有异常报警,如果初期还没有监控的情况我会按照下面步骤去看看系统层面有没有异常
    1、我首先会去看看系统的平均负载,使用top或者htop命令查看,平均负载体现的是系统的一个整体情况,他应该是cpu、内存、磁盘性能的一个综合,一般是平均负载的值大于机器cpu的核数,这时候说明机器资源已经紧张了
    2、平均负载高了以后,接下来就要看看具体是什么资源导致,我首先会在top中看cpu每个核的使用情况,如果占比很高,那瓶颈应该是cpu,接下来就要看看是什么进程导致的
    3、如果cpu没有问题,那接下来我会去看内存,首先是用free去查看内存的是用情况,但不直接看他剩余了多少,还要结合看看cache和buffer,然后再看看具体是什么进程占用了过高的内存,我也是是用top去排序
    4、内存没有问题的话就要去看磁盘了,磁盘我用iostat去查看,我遇到的磁盘问题比较少
    5、还有就是带宽问题,一般会用iftop去查看流量情况,看看流量是否超过的机器给定的带宽
    6、涉及到具体应用的话,就要根据具体应用的设定参数来查看,比如连接数是否查过设定值等
    7、如果系统层各个指标查下来都没有发现异常,那么就要考虑外部系统了,比如数据库、缓存、存储等

    基本上就上面这些步骤,有些不完整,希望跟着老师学习一些更系统的排查思路!

    作者回复: 总结的很好👍

    2018-11-21
    1
    167
  • 101010 == 42
    D2打卡

    1. 笔记
    技巧一:虽然系统的原理很重要,但在刚开始一定不要试图抓住所有的实现细节。”

    深陷到系统实现的内部,可能会让你丢掉学习的重点,而且繁杂的实现逻辑,很可能会打退你学习的积极性。所以,我个人观点是一定要适度。

    2. 心得
    作为一个完美主义者,一学起原理类的东西,真的不要太容易跑偏😂经常是看着某个重要原理,就想着找找看相关内容,然后就各种跳转搜索,以前最开始学数据结构的定义,都能跑到编译原理上,最后开始计算二进制了。

    有时候大半天了,一个原理都没看完,就各种死抠和联想。这么做确实印象深刻,但是真的很低效,心累。

    老师这里说的适度,真的很重要,而且这个度,确实应该是过来人才知道啊。

    我一向喜欢系统化的学习,能有个“升级简化版”的系统知识图谱,不要太开心。可惜不能上传图片,不然可以把每次标记和补充也都打个卡了。

    开始学了,加油!冲着我的四个月后涨工资的目标去了!

    作者回复: 总结的好👍

    2018-11-21
    35
  • Dragon
    能否在翻页的左侧或右侧加一个暂停键, 你想如果边听边看文字时候暂停还要返回头顶,多麻烦
    2018-11-23
    25
  • 发条橙子 。
    以前看服务器的资源使用只会简单的使用 top命令 看cpu使用的百分比。,但是却不清楚到底多高才算高危 ,面对持续增长我该怎么预防或处理 , load指标具体的含义 和 cpu有什么关联 ..这些都没有一个整体的概念

    作者回复: 下一篇就是平均负载😊

    2018-11-21
    22
  • Allen
    『day1』
    这周工作中遇到了一个紧急的问题(用的是arm系列的单板),单板的空间几乎快满了。 使用了top和free命令查看,单板内存的使用情况,仅仅凭借这两个命令,是不可能分析出来原因的。

    查看/proc/<pid>/下的的meminfo、status等文件可以具体才看到虚拟内存和实际物理内存的使用情况。 之前根本不了解/proc/<pid>里面的文件都是干嘛的。

    希望跟着老师的专栏,可以了解下linux系统的基本知识,以后遇到相关问题时,可以有一些思路。

    作者回复: 内存模块会详细介绍

    2018-11-21
    12
  • Geek_60821e
    希望之后课程能深入的用工具分析原因,不要讲工具怎么用,怎么用工具上网free的实例很多,找出瓶颈的原因是我来听课目的,wish nice
    2018-11-21
    8
  • 石壹笑
    切记,千万不要把性能工具当成学习的全部。
    应消除干扰,专注于愿问题本身。
    2018-11-21
    8
  • Gopher
    小哥哥声音好听,语音很清晰
    2018-11-22
    6
  • 夜空中最亮的星(华仔)
    已经在朋友圈转发2次老师的课了。
    2018-11-21
    6
  • Luna
    性能指标概念:高并发 => 吞吐 响应快 => 延时
    该概念是从应用负载的角度出发:Application ▹Libraries▹System Call▹Linux Kernel ▹Drive

     与之对应的是系统资源视角出发 :Drive▹Linux Kernel ▹System Call ▹Libraries ▹Application

    性能指标的评判有以上二种常用的角度

    接着六步

    1.选择性能指标评估应用和系统的性能

    2.为应用和系统设定性能目标

    3.进行性能基准测试

    4.性能分析定位瓶颈

    5.优化系统和应用程序

    6.性能监控和告警

    六步总结,从正确的角度出发,设定目标(性能优化不是漫无目的的),基准测试(了解现有系统应用的运行时情况),根据情况分析瓶颈,优化它,设置监控和告警(其实可以再扩展比如达到一定的负载,采取降级等操作)

    作者回复: 总结的很好

    2018-11-21
    6
  • mj4ever
    之所以选择学习这个专栏,就是希望能解决实际工作中的一些技术问题,当公司研发的产品在现场运行,出现性能问题的时,不会束手无策,毫无思路,误打误撞的去解决问题。
    因此,希望通过3个月的学习,自己可以掌握以下几个方面:
    1、建立整体性能的全局观
    2、理解最基本的几个系统知识原理
    3、掌握Linux 性能工具图谱的熟练应用
    感谢大家,也感谢能不断坚持的自己。

    作者回复: 👍

    2018-11-21
    5
  • Charles.Gast
    晚上下班,坐着地铁,看着教程。完美的过站。
    2018-12-04
    4
  • 上善若水
    之前调试网络性能问题,组网比较复杂,测试仪千万级用户拨号,越到后面越是上线速率急速下降,每个点都进行抓包监控丢包率,top也观测进程cpu利用率,就是找不出原因,进程cpu利用率也不高,丢包也不严重,对比抓包,发现上送包处理有很大延迟,后来pstack应用进程发现一处一点,原来应用进程有一处调用函数是阻塞的,光有生产者没有消费者,导致大用户拨号后阻塞超时,而且那个api还是第三方的没有源码,找到维护的组才确认问题,前后加班熬了两个星期才确认问题,所以痛下心来学习下性能定位课程
    2018-11-21
    4
  • 代码GG陆晓明
    学习这块,是想应用到手机系统上。安卓的性能一直是个诟病,想通过一些工具进行复测,能够找到一些思路进行优化,然后使用一套测试打分,来评估到底是改善还是没有。

    在了解学习linux的常用性能分析工具,想从本课程琢磨出一套方式,来进行系统的优化,找到一条优化安卓系统的有效方法。

    感谢!
    2018-11-21
    4
  • 番茄炒鸡蛋
    前段时间遇到服务请求过多,导致内存增高,但是过段时间请求下降,但内存还是一直比较高,如果后续再次遇到请求过多,就会导致没有内存,程序崩溃,请问这类问题如何排查?
    2018-11-21
    3
  • King_stone
    遇到过的问题:Linux上tomcat性能下降,资源消耗较大,最终判断是JAVA程序一个方法的问题。解决和监控的手段不够智能,写过一个监控但是JAVA本身的监控不稳定,消耗也较大,最终撤掉,希望课程能对这方面优化监控有介绍
    2018-11-21
    3
  • 梁中华
    打卡,希望作者必要的时候能结合虚拟机和docker来讲下,在这两种环境下的性能问题分析有什么要注意的,毕竟现在的应用不是运行在虚拟机就是运行在容器中

    作者回复: 会的,案例也会用到docker

    2018-11-21
    3
  • Cloud*
    之前有学习过一段时间,也写了几篇博客,涉及到了CPU,内存,IO,网络这几块,学习这个专栏,再巩固下知识,紧随大牛的脚步。
    2018-11-21
    3
  • lzh
    D1,上一次应该是D0😂,性能优化经验:线上慢查询导致数据库cpu 90%
    2018-11-27
    2
  • 叶子
    打卡第1天,在26岁的时候做了转行的决定,过程很痛苦,有太多东西去需要去一点点地死磕,沉下心去做,加油
    2018-11-23
    2
    2
收起评论
99+
返回
顶部