Linux系统线上故障排查的几种技巧
无论是开发还是运维,和 Linux 打交道是每个技术人的日常。然而,性能优化、故障排查也是软件系统中最有挑战的工作之一,甭管看了多少资料和书,一旦涉及到解决具体问题,照样儿一脸懵逼,比如:
下面,介绍几个 CPU 使用率过高的排查技巧: 1、通过top命令定位占用cpu高的进程 执行top命令得到以下结果: 通过上图可以明显看出进程PID41843占用cpu过高,明显存在问题,,定位到了进程id。当然如果你想只观察进程PID41843的CPU和内存以及负载情况,可以使用以下命令
结果如下: 2、通过top命令定位问题进程中每个线程占用cpu情况 通过问题进程中每个线程占用cpu情况使用可以使用如下命令:
查看进程PID41843的每一个线程占用CPU情况,如图。 由上图明显可以发现,线程PID41892CPU占用率最高,接下来定位该线程的代码是否出现异常导致cpu占用过高。 3、通过jstack 命令定位问题代码 上一步发现PID41892占用的CPU过高,就将这个PID转换成16进制,易知,PID41892转化成16进制为a3a4。使用如下命令命令定位问题代码:
输出如下:
可以分析得到: 线程Thread下的wait()函数cpu使用率很高,查看源代码中的test()函数代码如下: while循环无法结束,一直抢占cpu,导致程序cpu使用过高,修改代码即可。 当然了,除了cpu以外,还有很多其它问题,这种类似的排查经验只能从实践中总结,原理书是不会告诉你这些的。几年前,我自己学习那会儿也看了不少书,尝试从网上找过些零零散散的资料。但说真的,Linux 性能优化是个系统工程,除了要学习那些基础知识点之外,还有 2 点比较重要:
【编辑推荐】
点赞 0 (编辑:鹰潭站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 支付宝开源非侵入式 Android 自动化测试工具 Sol
- Windows中用于执行反向DNS查找的命令行实用程序是
- windows-server-2008 – Windows远程桌面是否有任
- windows – 追踪哪个进程/程序导致Kerberos预身份
- 如何检查Windows机器上的端口是否被阻止?
- 降低Win11的CPU要求 微软发布Windows 11 的 Insi
- windows-server-2003 – 抑制Windows Server上关
- 在Windows 10上释放存储空间的最佳应用程序
- 对于一个肯定少于25个用户的小型组织,在Windows
- Windows 11新版本发布,经典的控制面板将渐渐离去