01 | 如何学习Linux性能优化?
倪朋飞
该思维导图由 AI 生成,仅供参考
你好,我是倪朋飞。
你是否也曾跟我一样,看了很多书、学了很多 Linux 性能工具,但在面对 Linux 性能问题时,还是束手无策?实际上,性能分析和优化始终是大多数软件工程师的一个痛点。但是,面对难题,我们真的就无解了吗?
固然,性能问题的复杂性增加了学习难度,但这并不能成为我们进阶路上的“拦路虎”。在我看来,大多数人对性能问题“投降”,原因可能只有两个。
一个是你没找到有效的方法学原理,一听到“系统”、“底层”这些词就发怵,觉得东西太难,自己一定学不会,自然也就无法深入学下去,从而不能建立起性能的全局观。
再一个就是,你看到性能问题的根源太复杂,既不懂怎么去分析,也不能抽丝剥茧找到瓶颈。
你可能会想,反正程序出了问题,上网查就是了,用别人的方法,囫囵吞枣地多试几次,有可能就解决了。于是,你懒得深究这些方法为啥有效,更不知道为什么,很多方法在别人的环境有效,到你这儿就不行了。
所以,相同的错误重复在犯,相同的状况也是重复出现。
其实,性能问题并没有你想像得那么难,只要你理解了应用程序和系统的少数几个基本原理,再进行大量的实战练习,建立起整体性能的全局观,大多数性能问题的优化就会水到渠成。
我见过很多工程师,在分析应用程序所使用的第三方组件的性能时,并不熟悉这些组件所用的编程语言,却依然可以分析出线上问题的根源,并能通过一些方法进行优化,比如修改应用程序对它们的调用逻辑,或者调整组件的配置选项等。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
学习Linux性能优化需要全面掌握性能指标、基础知识和工具,并通过实践和思考加深理解。核心在于建立整体系统性能的全局观,理解系统原理、掌握性能工具,并通过实际场景演练加深理解。重点在于观察和运用系统原理,边学边实践,多思考总结并提出问题。选择适合的性能工具和提高学习效率也至关重要。读者可以准备一台Linux机器进行实践,不局限于Ubuntu系统。文章为读者提供了学习Linux性能优化的重点和方法,为进一步深入学习提供了指导。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Linux 性能优化实战》,新⼈⾸单¥68
《Linux 性能优化实战》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(323)
- 最新
- 精选
- forever我遇到性能瓶颈的排查思路 有监控的情况下,首先去看看监控大盘,看看有没有异常报警,如果初期还没有监控的情况我会按照下面步骤去看看系统层面有没有异常 1、我首先会去看看系统的平均负载,使用top或者htop命令查看,平均负载体现的是系统的一个整体情况,他应该是cpu、内存、磁盘性能的一个综合,一般是平均负载的值大于机器cpu的核数,这时候说明机器资源已经紧张了 2、平均负载高了以后,接下来就要看看具体是什么资源导致,我首先会在top中看cpu每个核的使用情况,如果占比很高,那瓶颈应该是cpu,接下来就要看看是什么进程导致的 3、如果cpu没有问题,那接下来我会去看内存,首先是用free去查看内存的是用情况,但不直接看他剩余了多少,还要结合看看cache和buffer,然后再看看具体是什么进程占用了过高的内存,我也是是用top去排序 4、内存没有问题的话就要去看磁盘了,磁盘我用iostat去查看,我遇到的磁盘问题比较少 5、还有就是带宽问题,一般会用iftop去查看流量情况,看看流量是否超过的机器给定的带宽 6、涉及到具体应用的话,就要根据具体应用的设定参数来查看,比如连接数是否查过设定值等 7、如果系统层各个指标查下来都没有发现异常,那么就要考虑外部系统了,比如数据库、缓存、存储等 基本上就上面这些步骤,有些不完整,希望跟着老师学习一些更系统的排查思路!
作者回复: 总结的很好👍
2018-11-2111361 - XD2打卡 1. 笔记 技巧一:虽然系统的原理很重要,但在刚开始一定不要试图抓住所有的实现细节。” 深陷到系统实现的内部,可能会让你丢掉学习的重点,而且繁杂的实现逻辑,很可能会打退你学习的积极性。所以,我个人观点是一定要适度。 2. 心得 作为一个完美主义者,一学起原理类的东西,真的不要太容易跑偏😂经常是看着某个重要原理,就想着找找看相关内容,然后就各种跳转搜索,以前最开始学数据结构的定义,都能跑到编译原理上,最后开始计算二进制了。 有时候大半天了,一个原理都没看完,就各种死抠和联想。这么做确实印象深刻,但是真的很低效,心累。 老师这里说的适度,真的很重要,而且这个度,确实应该是过来人才知道啊。 我一向喜欢系统化的学习,能有个“升级简化版”的系统知识图谱,不要太开心。可惜不能上传图片,不然可以把每次标记和补充也都打个卡了。 开始学了,加油!冲着我的四个月后涨工资的目标去了!
作者回复: 总结的好👍
2018-11-21262 - 发条橙子 。以前看服务器的资源使用只会简单的使用 top命令 看cpu使用的百分比。,但是却不清楚到底多高才算高危 ,面对持续增长我该怎么预防或处理 , load指标具体的含义 和 cpu有什么关联 ..这些都没有一个整体的概念
作者回复: 下一篇就是平均负载😊
2018-11-2125 - Allen『day1』 这周工作中遇到了一个紧急的问题(用的是arm系列的单板),单板的空间几乎快满了。 使用了top和free命令查看,单板内存的使用情况,仅仅凭借这两个命令,是不可能分析出来原因的。 查看/proc/<pid>/下的的meminfo、status等文件可以具体才看到虚拟内存和实际物理内存的使用情况。 之前根本不了解/proc/<pid>里面的文件都是干嘛的。 希望跟着老师的专栏,可以了解下linux系统的基本知识,以后遇到相关问题时,可以有一些思路。
作者回复: 内存模块会详细介绍
2018-11-2120 - Luna性能指标概念:高并发 => 吞吐 响应快 => 延时 该概念是从应用负载的角度出发:Application ▹Libraries▹System Call▹Linux Kernel ▹Drive 与之对应的是系统资源视角出发 :Drive▹Linux Kernel ▹System Call ▹Libraries ▹Application 性能指标的评判有以上二种常用的角度 接着六步 1.选择性能指标评估应用和系统的性能 2.为应用和系统设定性能目标 3.进行性能基准测试 4.性能分析定位瓶颈 5.优化系统和应用程序 6.性能监控和告警 六步总结,从正确的角度出发,设定目标(性能优化不是漫无目的的),基准测试(了解现有系统应用的运行时情况),根据情况分析瓶颈,优化它,设置监控和告警(其实可以再扩展比如达到一定的负载,采取降级等操作)
作者回复: 总结的很好
2018-11-2114 - J.Smile“你可以先学会我给你讲的这些系统工作原理,但不要去深究 Linux 内核是如何做到的,而是要把你的重点放到如何观察和运用这些原理上” -------------------------- 感觉说的很对,前几天订阅了刘超老师的《趣谈LinuxOS》,这个专栏罗列了不少Linux内核的代码片段,可以说是基本都看不懂,作为一名7年java尴尬的一批,主要就是总是陷入到Linux内核的代码中,导致一篇专栏反复看了两遍也没懂得更多,所以果断阶段性放弃了,所以聚焦比较重要,我也是拿这个作为自己的座右铭了,希望可以把这个专栏坚持下去!加油!💪!☆!
作者回复: 加油👍
2020-07-2012 - mj4ever之所以选择学习这个专栏,就是希望能解决实际工作中的一些技术问题,当公司研发的产品在现场运行,出现性能问题的时,不会束手无策,毫无思路,误打误撞的去解决问题。 因此,希望通过3个月的学习,自己可以掌握以下几个方面: 1、建立整体性能的全局观 2、理解最基本的几个系统知识原理 3、掌握Linux 性能工具图谱的熟练应用 感谢大家,也感谢能不断坚持的自己。
作者回复: 👍
2018-11-2128 - java小白D2打卡,做了一段时间的性能优化工作,发现自己工作中只是重复的进行压测,压接口压场景,遇到的最大问题是CPU高,基本就是通过线程栈去分析那些线程有问题然后抛给开发去看代码是不是有问题,一个个的去解决,最后成功降低CPU的也不多,堆栈、磁盘I/O、网络这些基本都没怎么重点用到。现在总结下自己面对的问题:①性能分析没有一个整体的分析思路,在遇到各种各样的问题的时候应该用什么样的方法去分析;②自己没有编程开发的经验,代码方面一直是自己的薄弱环节,也在逐渐学习加强。想问下作者,代码开发基础在性能优化工作中到底能占多少比重有多重要?
作者回复: 在分析的过程中一般不需要去做大量开发,随后的优化步骤很可能需要代码开发解决。
2018-11-214 - 梁中华打卡,希望作者必要的时候能结合虚拟机和docker来讲下,在这两种环境下的性能问题分析有什么要注意的,毕竟现在的应用不是运行在虚拟机就是运行在容器中
作者回复: 会的,案例也会用到docker
2018-11-214 - 王旧业案例在工具的选用上,能否尽量使用操作系统自带的工具。例如,top命令等。因为在实际定位客户环境问题时,安装一些新的工具往往流程上很麻烦,并且还有一些工具是开源的,客户有时候会认为这些工具有风险
作者回复: 看情况,有的时候只用自带的工具就可以定位出问题,不过大多数情况都需要安装一些非自带的性能工具
2019-04-242
收起评论