Linux故障排查之CPU占用率過高


有時候我們可能會遇到CPU一直占用過高的情況。之前我的做法是,直接查找到相關的進程,然后殺死或重啟即可。這個方法對於一般的應用問題還不大,但是要是是重要的環境的話,可萬萬使不得。

如果是重要的環境,那么我們就需要進行更加精確的定位。下面以定位Tomcat應用占用CPU過高的問題為例,講一下如何解決CPU占用過高問題。

一、首先我們需要先top確定一下那個進程占用CPU最高。執行命令top

 

 二、然后我們需要知道這個進程有哪些線程,又是哪個線程在占用大量CPU(科普一下:線程是進程的單位,一個進程是由若干線程組成的)。執行命令top -Hp 8104

 

 這里我只是做簡單示例,所以我們就假設第一個線程占用CPU過高

 

三、接着我們還需要知道這個線程的ID轉換為16進制的線程是多少

 

 四、接着我們再使用jstack 8104|grep "1fdb" -A 30查看具體的進程信息。解釋一下jstack是Prints Java thread stack traces for a Java process, core file, or remote debug server。至於grep -A 30則是顯示(上下文,也就是上下行)下文30條相關的語句

仔細查看這些信息說不定就能發現是什么問題了,因為我這里是正常的,所以看不到什么異常而已

 

 

后續遇到實際問題我再進行補充完善

 


免責聲明!

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



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