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 (编辑:濮阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Win11更改默认浏览器太麻烦,Firefox火狐成默认浏览器变得更
- 微软发布Windows 10 2019五月更新最低配置要求!
- 权限 – 具有管理员的新文件的文件所有权 – 为什么它为组管
- 微软:Windows 10不再自动备份注册表 不是Bug
- Chrome 68已支持Windows 10原生通知功能 可遵从行动中心的设
- windows – 如何从命令promt title中删除’Administrator:
- 生成Linux运行时间报告的Bash脚本
- 我的电脑你别动 Windows 10几种安全措施盘点
- 微软正将 Windows 11 MR 混合现实新性能推送给 Windows 10
- 适用于Windows 10 PC的3个最佳浏览器adblocker