tomcat+java的web程序持續占cpu高問題調試【轉】


轉自

tomcat+java的web程序持續占cpu問題調試 - 像風一樣的自由 - CSDN博客
http://blog.csdn.net/five3/article/details/28416771

生產環境下JAVA進程高CPU占用故障排查-huifeideluotuo-ChinaUnix博客
http://blog.chinaunix.net/uid-10449864-id-3463151.html

現象:

在tomcat中部署Java的web應用程序,過一段時間后出現tomcat的java進程持續占用cpu高達100%,導致web程序訪問受阻。

 

可能原因分析:

可能程序確實在進行數據計算;或程序進入死循環;

 

解決方法:

1、先用top查看占用cpu的進程id

2、再用ps -ef | grep PID定位具體的進程主體;如是否是tomcat啟動的java程序

3、用ps -mp pid -o THREAD,tid,time打印出該進程下的線程占用cpu情況

1

找到了耗時最高的線程28802,占用CPU時間快兩個小時了!

或者使用

[root@localhost logs]# ps -mp 2633 -o THREAD,tid,time | sort -rn
顯示結果如下:
USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME
root     10.5  19    - -         -      -  3626 00:12:48
root     10.1  19    - -         -      -  3593 00:12:16

 

4、其次將需要的線程ID轉換為16進制格式:

printf "%x\n" tid

2

5、最后打印線程的堆棧信息:

jstack pid |grep tid -A 30

3

找到出現問題的代碼,並分析具體函數中是否有可能出現死循環的代碼段。

通常問題出現在while, for之類的循環代碼片段。


免責聲明!

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



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