无论是开发还是运维,和Linux打交道是每位技术人的日常。但是,性能优化、故障排查也是软件系统中最有挑战的工作之一,甭管看了多少资料和书linux标准教程,一旦涉及到解决具体问题,照样儿一脸懵逼,例如:
下边linux查看cpu使用率高,介绍几个CPU使用率偏低的排查方法:
1、通过top命令定位占用cpu高的进程
执行top命令得到以下结果:
通过上图可以显著看出进程PID41843占用cpu偏低,显著存在问题,定位到了进程id。其实假如你想只观察进程PID41843的CPU和显存以及负载情况,可以使用以下命令
top-p41843。
结果如下:
2、通过top命令定位问题进程中每位线程占用cpu情况
通过问题进程中每位线程占用cpu情况使用可以使用如下命令:
top-p41843-H
查看进程PID41843的每一个线程占用CPU情况,如图。
由上图显著可以发觉,线程PID41892CPU占用率最高,接出来定位该线程的代码是否出现异常造成cpu占用偏低。
3、通过jstack命令定位问题代码
上一步发觉PID41892占用的CPU偏低,就将这个PID转换成16补码,易知,PID41892转化成16补码为a3a4。使用如下命令命令定位问题代码:
jstack 41892 | grep a3a4
输出如下:
"Thread" prio=10 tid=0x00007f950043e000 nid=0x54ee in test();
可以剖析得到:线程Thread下的wait()函数cpu使用率很高,查看源代码中的test()函数代码如下:
public void test(){
while(true){
for(int i = 0 ;i<100;i++);
}
}
while循环未能结束,仍然占据cpu,造成程序cpu使用过低,更改代码即可。
其实了,不仅cpu以外,还有好多其它问题,这种类似的排查经验只能从实践中总结linux vi 命令,原理书是不会告诉你这种的。几年前,我自己学习那会儿也看了不少书,尝试从网上找过些零零散散的资料。但说真的,Linux性能优化是个系统工程,不仅要学习这些基础知识点之外,还有2点比较重要:
近来,我相继”追“了极客时间的专栏《Linux性能优化实战》,觉得内容是真的挺硬核,是那个实践性特别强的课,即学即用。
这个专栏大约有50讲左右,讲了Linux性能的基本指标、工具,以及相应的观测、分析和调优方式,用实际案例贯串了从应用程序到操作系统的各个组件。
作者倪朋飞是谷歌的Azure资深工程师,有着近10年的云估算工作经验linux查看cpu使用率高,为啥对Linux性能优化的知识体系有如此深入的理解。
没记错的话,该专栏是今年年底上线的,到现今也就3个月,早已有超过1.7W人订阅了,截了点评价大家可以参考瞧瞧。
如今,这个专栏正在进行24小时的限时拼团,
扫我的海报参与拼团,可以立减20,到手只要79元.
参团福利:
扫码参与拼团,并在评论区留言说说:
→日常工作中的什么场景,让你感觉系统性能非常重要?
点赞第1的参团用户可选择极客时间99元任意课程,狼哥将自费送出,点赞截至时间:3月22日18:00。