Linux系统中CPU占用率较高问题排查思路与解决方法
2022/7/9 3:20:20
本文主要是介绍Linux系统中CPU占用率较高问题排查思路与解决方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
这篇文章主要给大家介绍了关于Linux系统中CPU占用率较高问题排查思路与解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Linux具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
前言
作为 Linux 运维工程师,在日常工作中我们会遇到 Linux服务器上出现CPU负载达到100%居高不下的情况,如果CPU 持续跑高,则会影响业务系统的正常运行,带来企业损失。
很多运维的同学遇到这种状况往往会不知所措,对于CPU过载问题通常使用以下两种方式即可快速定位:
方法一
第一步:使用
top命令,然后按shift+p按照CPU排序
找到占用CPU过高的进程的pid
第二步:使用
top -H -p [进程id]
找到进程中消耗资源最高的线程的id
第三步:使用
echo ‘obase=16;[线程id]’ | bc或者printf “%x\n” [线程id]
将线程id转换为16进制(字母要小写)
bc是linux的计算器命令
第四步:执行
jstack [进程id] |grep -A 10 [线程id的16进制]”
查看线程状态信息
方法二
第一步:使用
top命令,然后按shift+p按照CPU排序
找到占用CPU过高的进程
第二步:使用
ps -mp pid -o THREAD,tid,time | sort -rn
获取线程信息,并找到占用CPU高的线程
第三步:使用
echo ‘obase=16;[线程id]’ | bc或者printf “%x\n” [线程id]
将需要的线程ID转换为16进制格式
第四步:使用
jstack pid |grep tid -A 30 [线程id的16进制]
打印线程的堆栈信息
案例分析
结合上面来做。
场景描述
生产环境下JAVA进程高CPU占用故障排查
解决过程
1、根据top命令,shift+p,发现PID为41673的Java进程占用CPU高达250%,出现故障。
2、找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:
[root@localhost ~]# ps -mp 41673 -o THREAD,tid,time | sort -rn
显示结果如下:
3.将需要的线程TID转换为16进制格式
[root@localhost ~]# printf "%x\n" 41846 a376
4、最后使用jstack命令打印出该进程下面的此线程的堆栈信息:
[root@localhost ~]# jstack 41673 |grep "a376" -A 30
解决办法
1、根据top命令,shift+p,发现PID为41673的Java进程占用CPU高达250%,出现故障。
2、根据pid查看他的进程看看是什么服务占用这么高
ps -ef |grep -v grep | grep 41673
3、查看到是一个java进程占用这么高,然后看看有没有用,没有用的话就杀掉它
kill -9 41673
4、再次top查看cpu整体就降下来了。
这篇关于Linux系统中CPU占用率较高问题排查思路与解决方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15快速提升职场效率:从整理任务清单开始
- 2024-11-15低代码开发学习:新手入门指南
- 2024-11-15数字能量的职场释放:实物量法诠释效率的多维度
- 2024-11-15Postman学习:新手入门全面指南
- 2024-11-15低代码开发入门:初学者必看指南
- 2024-11-15低代码入门:新手必读指南
- 2024-11-15低代码应用入门:新手必读教程
- 2024-11-15Postman入门:新手必备教程
- 2024-11-15Postman教程:新手快速上手指南
- 2024-11-14企业协同软件:现代化管理的新选择