java 程序 CPU 100%的解決辦法


###Linux環境 

top查到25812進程的CPU高

根據進程的PID找到 該進程中CPU使用率最高的線程號 26001 使用了72%

ps -mp 25812 -o THREAD,tid,time |sort -n -k 2 按線程使用cpu排序 或

ps -mp 25812 -o THREAD,tid,time |awk ‘/root/ && $2>50 {print $0}’  輸出大於50的線程

轉為16進制

執行 kill -3  15812 生成進程當前線程信息--javacore

通過cat javacore |grep 0x6591 -C10 查看線程具體內容

 

###AIX

topas 

 

 

‭ps -mp 4194678 -o THREAD,tid,time |awk '$6 > 30 {print $0}' >> text3

第一列加了16進制之后

text3:
10F037F‬ - - - 17761151 R 43 110 0 - 400000 - - - 17761151 -
‭11A0107‬ - - - 18481415 R 37 106 0 - 400000 - - - 18481415 -
‭1740211‬ - - - 24379921 R 41 109 0 - 400000 - - - 24379921 -
‭2200091‬ - - - 35651729 R 38 107 0 - 400000 - - - 35651729 -
‭2240133‬ - - - 35914035 R 39 108 0 - 400000 - - - 35914035 -
USER PID PPID TID ST CP PRI SC WCHAN F TT BND COMMAND

 

 

 10F037F‬ 使用了43%

 

 

 

 

 直接的分析工具arthas  ,show-busy-java-threads這個腳本

 https://blog.csdn.net/qq_34741165/article/details/89527727

###win

生成javacore  

jstack -l -r -pid

jsp文件 IBMJDK

<%
com.ibm.jvm.Dump.JavaDump();
%> 

放到nchome/hotwebs/nc_web/ 訪問27.0.0.1:9081/javacore.jsp 即可

使用processexplorer  查到 TID 轉為16進制 在javacore中查找堆棧 如下連接下載

https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer

 

javacore 及heappdump 生成下載地址 https://blog.csdn.net/zfr629/article/details/52993813

各OS CPU使用率高分析

http://www.blogjava.net/jesson2005/articles/416278.html?opt=admin

 

 

 

 

https://blog.csdn.net/qq_34741165/article/details/89527727

https://alibaba.github.io/arthas/

https://www.cnblogs.com/shihaiming/p/11451583.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM