CPU飆高問題排查

2021-10-11 00:12:08 字數 806 閱讀 1914

1、查詢哪個程序占用cpu

2、程序哪個執行緒占用cpu

3、查詢執行緒的堆疊資訊

cpu飆高時,基本就是三板斧就可以找到具體占用cpu的執行緒資訊,這樣,你就看到cpu這麼高,是什麼執行緒在搗亂了!

可以使用top 或者top | grep 使用者名稱

比如這裡我們可以使用 top | grep deploy 查詢當前使用者deploy下面有哪些程序比較占用cpu,如下圖,可以發現程序28284比較占用cpu

接著我們檢視上述程序內是哪些執行緒在搗亂,使用命令top -h -p  pid

在這裡我們使用top -h -p  28284,結果如下圖,我們發現是有幾個執行緒相對占用比較高,比如28389、28390等(這裡我們只是展示效果,不要在乎是否真的占用比較大)

在這裡我們要分兩步

1、將tid轉換為16進製制的數字:printf 「%x\n」 tid

2、 查詢執行緒資訊:jstack 28284 | grep 6ee5 -a 10

執行結果如下圖,我們可以看到具體是我們的應用裡的哪個執行緒占用cpu較高,比如這裡就是乙個叫******pausedetectorthread_1的執行緒,下面就是根據具體執行緒業務分析了

高CPU排查方法分享

1 軟體效能較差,占用cpu較多,往往是由於某段 邏輯演算法不佳導致,那如何在數以千計的函式中找到問題函式呢?2 在使用 runaway命令比較不同時間各執行緒占用cpu時間,找到cpu時間增漲較多的執行緒,那麼就初步定位了問題函式所在的問題執行緒,3 然後在不同的時刻觀察問題執行緒的呼叫棧,如果多...

排查Java高CPU占用原因

top命令發現某個程序占用了100 的cpu 通過ps命令,進一步確定哪個程序出了問題 再檢視執行緒占用cpu的列表 找到占用cpu最高的執行緒,檢視tid,將其轉換為16進製制格式 printf x n tid 而後檢視堆疊資訊 jstack pid grep 16進製制tid a 60這裡報錯是...

CPU飆公升問題排查

服務異常報警,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檔案裡面執行緒為17...