浅谈无法避开的Linux 系统故障

浅谈无法避开的Linux 系统故障,第1张

作为程序员,和 Linux 打交道,在服务器上分析系统性能情况,我觉得是每一个后端工程师都无法避开的事情。

无论你是开发还是运维,可能都经历过这样的场景:

流量高峰期,服务器 CPU 使用率过高报警,你登录 Linux 上去 top 完之后,却不知道怎么进一步定位,到底是系统 CPU 资源太少,还是程序并发部分写得有问题?

系统并没有跑什么吃内存的程序,但在敲完 free 命令之后,却发现已经没什么内存了,到底是哪里占用了内存?为什么?

一大早就收到 Zabbix 告警,你发现某台存放监控数据的数据库主机 CPU 的 I/O Wait 较高,该怎么办?

Linux 性能问题一直是程序员头上的“紧箍咒”,大多数时候,我们只能看到“症状”,却不知道从哪儿下手排查和解决。就算看了很多资料和书籍,一旦涉及到具体问题,还是会一脸懵逼。

在我看来,与其上来就去啃厚厚的原理书,把自己的信心压垮,不如带着问题,对症下药。说说我的经验,有 3 点我觉得比较重要:

先掌握性能优化的思路和方法,尝试大量 Linux 性能工具;

把性能问题跟系统原理关联起来,特别是把应用程序、库函数、系统调用、内核和硬件等不同的层级贯穿起来;

最终从学习到输出,从实践中总结经验。

这其中,一开始就劝退你的,可能就是 Linux 性能工具的使用,它除了要考虑性能指标的目的外,还要结合待分析的环境来综合选取。

虽说咱有布伦丹·格雷格(Brendan Gregg)大师整理的性能工具图谱,相信你也多少参考过,但其实它还不够具体,使用时还要去查找每个工具的手册,对比分析做出选择。

浅谈无法避开的Linux 系统故障,36dabb78-3979-11ed-9e49-dac502259ad0.jpg,第2张

所以每次用的时候,我就在想,有没有更好的方法来理解这些工具呢?刚刚开始研究的时候,可没少在网上找资料,但总是零散、不成体系,最终我找到了倪朋飞《Linux 性能优化实战》专栏中,总结的几个性能工具图。

他根据「性能指标」的不同,将工具划分为 CPU、内存、磁盘 I / O 及网络,4 大类型,总算是一次性让我把性能工具搞明白了。

浅谈无法避开的Linux 系统故障,36f982d8-3979-11ed-9e49-dac502259ad0.jpg,第3张

浅谈无法避开的Linux 系统故障,38428086-3979-11ed-9e49-dac502259ad0.jpg,第4张

看这些图,就很清晰了,比如,当遇到 I/O 性能问题时,可以根据不同的性能指标,使用 iostat、iotop、blktrace 等工具分析磁盘 I/O 的瓶颈。

编辑:黄飞

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/dianzi/2997522.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-26
下一篇 2022-09-26

发表评论

登录后才能评论

评论列表(0条)

保存