CPU飆公升問題排查

2022-10-01 10:39:10 字數 495 閱讀 6844

服務異常報警,cpu 100%

1.執行top命令

查詢程序id為 17239

2.檢視程序內的哪些執行緒cpu 高

top -hp 17239

3.通過jstack生成dump資訊

jstack 17239 > ./jstack-$(date + %y%m%d%h%m%s).txt

查詢執行緒dump檔案裡面執行緒為17248的執行緒,(需要將17248轉成16進製制)即0x4360

發現0x4360為虛擬機器執行緒。

vm thread佔cpu高基本上是jvm在頻繁gc導致,原因基本上短時內建立了大量物件堆積造成頻繁gc。

4.生成記憶體dump檔案,繼續排查問題

jmap -dump:file=檔名.dump[pid]

通過mat檢視dump文

5.結果

通過檢視**,執行執行了一次全部查詢,導致大量物件佔滿記憶體。找到對應日誌,入參list裡面加了乙個null物件,跳過了檢測。

記一次CPU突然飆公升到 100 問題排查

線上 cpu 飈高問題該如何定位問題呢?是因為執行緒太多,導致上下文切換?還是因為應用 現了死迴圈?還是gc頻繁導致 cpu 突然飆公升?該如何入手呢?首先要知道那些情況會導致 cpu 的突然飆公升 頻繁gc,訪問量高時,有可能造成頻繁的gc 甚至fgc。當呼叫量大時,記憶體分配過快,就會造成gc執...

如何使用Windbg 查Cpu飆公升問題

2 開啟windbg 設定 file symbol search path 位址如下 c symbols srv c mylocalsymbols srv c mysymbol 3 開啟windbg 將程序轉存的程序檔案 拉進windbg 4 在windbg介面 輸入載入命令 load c wind...

CPU飆高問題排查

1 查詢哪個程序占用cpu 2 程序哪個執行緒占用cpu 3 查詢執行緒的堆疊資訊 cpu飆高時,基本就是三板斧就可以找到具體占用cpu的執行緒資訊,這樣,你就看到cpu這麼高,是什麼執行緒在搗亂了!可以使用top 或者top grep 使用者名稱 比如這裡我們可以使用 top grep deplo...