關於Tomcat web程序持續佔cpu問題處理

現象:java

在tomcat中部署java的web應用程序,過一段時間後出現tomcat的java進程持續佔用cpu高達70%,致使web程序訪問受阻。web


可能緣由分析:tomcat

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


解決方法:spa

一、先用top查看佔用cpu的進程id線程

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

三、用ps -mp pid -o THREAD,tid,time打印出該進程下的線程佔用cpu狀況部署


找到了耗時最高的線程30756,佔用CPU時間快十五個小時!
循環

四、其次將須要的線程ID轉換爲16進制格式:grep

printf "%x\n" tid


五、最後打印線程的堆棧信息:

jstack pid |grep tid -A 30

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

一般問題出如今while, for之類的循環代碼片斷。

相關文章
相關標籤/搜索