1. 程式人生 > >java cpu佔用100%分析

java cpu佔用100%分析

主要思路是通過ps分析java程序及相應的佔用高cpu的java執行緒,然後看該執行緒在哪裡一直執行佔用cpu 

1:列印使用者、程序id、父程序id、執行緒id(對於此次很重要)、執行時間、CPU使用率、啟動命令並按CPU使用率排序。

ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu 

504      29046  1163 24056 00:00:01  0.0 /usr/java/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-7.0.39/conf/logging.properties -
504      29046  1163 29425 06:14:02  6.7 /usr/java/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-7.0.39/conf/logging.properties -
504      29046  1163 29429 06:14:37  6.7 /usr/java/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-7.0.39/conf/logging.properties -
504      29046  1163 29432 06:14:45  6.7 /usr/java/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-7.0.39/conf/logging.properties -
504      29046  1163 16577 06:13:47  8.9 /usr/java/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-7.0.39/conf/logging.properties -
504      29046  1163 24967 06:14:13  9.4 /usr/java/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-7.0.39/conf/logging.properties -
504      29046  1163 19293 06:13:13 31.3 /usr/java/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-7.0.39/conf/logging.properties -

2:講執行緒ID轉換為16進位制,

printf "%x\n" 19293    ==> 4b5d

3:使用jstack分析該執行緒

jstack 29046 | grep  4b5d -A 40


步驟1也可以通過先執行top,再ps來分析 ps -mp 29046 -o THREAD,tid,time