1.top查詢出哪個程序消耗的cpu高(top -c)
2.top -h -p查詢出哪個執行緒消耗的cpu高(top -h -p pid)
3.printf%x進行pid的進製轉換
4.jstack記錄程序的堆疊資訊
5.找出消耗cpu最高的執行緒資訊
記憶體飆高處理步驟
1.jstat命令檢視fgc發生的次數和消耗的時間,次數越多,耗時越長說明存在問題;
2.連續檢視jmap -heap檢視老生代的占用情況,變化越大說明程式存在問題;
1.使用連續的jmap -histo:live命令匯出檔案,比對載入物件的差異,差異部分一般是發生問題的地方。
gc引起的單核飆高
1.單個cpu佔用率高,首先從gc查起。
常見sy飆高
1.執行緒上下文切換頻繁
2.執行緒太多
一般是死迴圈或者死鎖問題導致。
通過 top 命令找到 cpu 消耗最高的程序,並記住程序 id 。
top -m -n 2 -d 3 >/top.txt 檢視top
再次通過 top -hp 找到 cpu 消耗最高的執行緒 id,並記住執行緒 id(十進位制).
3.通過 jdk 提供的 jstack 工具 dump 執行緒堆疊資訊到指定檔案中。
jstack >/jstack_1.txt 一次堆疊快照 備用
jstack >/jstack_2.txt 兩次堆疊快照 備用
由於剛剛的執行緒 id 是十進位制的,而堆疊資訊中的執行緒 id 是16進製制的,因此我們需要將10進製的轉換成16進製制的,並用這個執行緒 id 在堆疊中查詢。
使用 printf 「%x\n」 [十進位制數字] ,可以將10進製轉換成16進製制。
通過剛剛轉換的16進製制數字從堆疊資訊裡找到對應的執行緒堆疊。就可以從該堆疊中看出端倪。
CPU飈高處理步驟
cpu飈高是如何處理的?1 top查詢出哪個程序消耗的cpu高 top c 2 top h p查詢出哪個執行緒消耗的cpu高 top h p pid 這個命令就能顯示剛剛找到的程序的所有執行緒的資源消耗情況。3 進行pid的進製轉換 找到cpu負載高的執行緒pid 8627,把這個數字轉換成16進製...
Oracle資料庫CPU使用率過高處理記錄
一 問題描述 執行在windows上的oracle開發庫的oracle程序cpu使用率保持在99 伺服器和資料庫均反應緩慢。二 排查思路 可能造成cpu使用率高的情況有 大量排序 大量sql解析 全表掃瞄 oracle bug等。因此希望找到占用cpu較高的程序id unix或linux 或執行緒i...
一次GC執行緒占用系統CPU過高處理過程
因為測試人員報告說,最近訂單系統總是超時,要重啟才能恢復正常,但是第二次復現的時間不固定。然後先是檢視下應用狀態是否正常,沒有問題。然後檢視日誌,發現有很多交易報超時。仔細檢視超時的日誌,發現什麼型別的交易都有,而且超時的地方也不固定,更像是系統或者架構層面的錯誤。趕緊看下 ps ux linux系...