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 (编辑:我爱制作网_潮州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 快速学会win10专业版调烟雾头
- 图文演示攀升win10电脑一键安装教程步骤
- windows-server-2008 – “ipv6等效”192.168.x.x(配置静态
- 快速打造下雨动态图片 掀非主流伤感风
- PC和Android合体 微软宣布Windows 11安卓子系统下月全面开放
- windows-server-2008-r2 – 在Windows Server 2008 R2下查看
- Windows 11文件管理器迎来改进!复制目录路径更简单
- Win10任务栏Cortana选项中没有 显示搜索框 处理方法
- windows-7 – 当PC处于休眠/待机状态时,是否会发生Windows
- Linux脚本学习必经之路---shell脚本实例分享