生產環境出現CPU占用過高,分析思路和定位


top 定位cpu占比高的pid
jps -l 定位具體是后台哪個應用程序
ps -mp 進程id -o(自定義格式) THREAD,tid,time 定位當前進程所有線程占用cpu時間高的線程id
jstack 進程id | grep tid(線程id轉換為英文小寫16進制格式) -A行數 定位到具體某一行代碼引起的

 

案例演示

 

程序跑一下

開始進行定位分析

 

 

 

 

 

 

 

 

 

 

 

線上系統的CPU負載過高的兩個常見場景

第一個場景:是你自己在系統里創建了大量的線程, 這些線程同時並發運行,而且工作負載都很重,過多的線程同時並發運行就會導致你的機器CPU負載過重

第二個場景:就是你的機器運行的JVM在執行頻繁的Full GC, Full GC 是非常耗費CPU資源的, 它是一個非常負載的過程,所以一旦你的JVM有頻繁的Full GC,

      帶來的一個明顯感覺,一個是系統可能會時不時的卡死, 因此Full GC 會帶來一定的"Stop the world" 問題, 一個是機器的CPU負載過高.

      所以一旦知道CPU負載過高的兩個原因,就容易排查了

首先看一下JVM Full GC 的頻率 通過jstat,或者是監控平台, 很容易看到現在Full GC頻率, 如果是Full GC頻繁,那就是Full Gc引起的CPU負載過高

如果Full GC頻率很正常, 那就肯定是你的系統創建了過多線程在並發執行負載很重的任務了


免責聲明!

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



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