在linux环境下部署的应用,有时候出于各种原因,出现cpu占用100%的情况。这时候,就需要快速分析定位cpu占用的原因。

通常,通过linux系统的top命令,可以看出具体哪个进程占用了过多的cpu资源。但如果发现是java进程,那么就需要进一步分析是java进程中的具体哪个线程出现了问题。

1、确定Java应用进程编号
使用 jps 或 ps -ef|grep java 命令确定想要分析的应用的进程编号

jps

(备注:如果在不知道哪个应用占用cpu高的话,可以先通过top命令找到占用cpu最高的进程ID,再通过id查询线程id,或者直接通过top -H找到占用cpu最高线程)

2、查看Java应用中线程CPU占比
使用top -p 101973 -H 命令查看指定进程下的线程cpu占用比例,分析是具体哪个线程占用率过高,其中 101973 就是通过第一步确定下来的进程编号

top

3、查看线程信息
从中选择占比较高的线程的编号(PID),并将该PID转换为16进制(printf "%x\n" 线程id)0x5bd8。通过jstack 101973 |grep -A 10 0x5bd8

å·ä½çº¿ç¨ä¿¡æ¯

通过该命令可以分析出线程的具体信息,再通过相应的解决方法来解决cpu占用过高的问题。
--------------------- 
作者:伪开发人员 
来源:CSDN 
原文:https://blog.csdn.net/green1893/article/details/72357032 
 

Logo

更多推荐