生產(chǎn)服務(wù)CPU100%問(wèn)題快速定位
Posted on 2018-12-10 15:59 為自己代言 閱讀(195) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): Linux/mysql調(diào)優(yōu)或者按Shift+p公司生產(chǎn)服務(wù)上常常出現(xiàn) CPU 100% 問(wèn)題,需要快速定位問(wèn)題出現(xiàn)在那里,以下備注解決方法步驟:
1: 工具:top方法:
• 執(zhí)行top -c ,顯示進(jìn)程運(yùn)行信息列表
• 鍵入P (大寫(xiě)p),進(jìn)程按照CPU使用率排序 (輸入大寫(xiě)P,則結(jié)果按CPU占用降序排序。輸入大寫(xiě)M,結(jié)果按內(nèi)存占用降序排序。(注:大寫(xiě)P可以在capslock狀態(tài)輸入p,或者按Shift+p)

如上圖找出最耗CPU 進(jìn)程 10765
統(tǒng)計(jì)信息區(qū)
步驟二:找出最耗CPU的線程
命令: printf '%x' 10765 輸出結(jié)果:2a0d
步驟四: 使用JVM命令 jstatck
jstack 10765 | grep '2a0d' -C5 --color 打印堆棧信息,通過(guò)id 過(guò)濾到線程的堆棧信息。
以下是top 其它常用命令:
如上圖找出最耗CPU 進(jìn)程 10765
統(tǒng)計(jì)信息區(qū)
前五行是系統(tǒng)整體的統(tǒng)計(jì)信息。第一行是任務(wù)隊(duì)列信息,同 uptime 命令的執(zhí)行結(jié)果。其內(nèi)容如下:
01:06:48 | 當(dāng)前時(shí)間 |
up 1:22 | 系統(tǒng)運(yùn)行時(shí)間,格式為時(shí):分 |
1 user | 當(dāng)前登錄用戶數(shù) |
load average: 0.06, 0.60, 0.48 | 系統(tǒng)負(fù)載,即任務(wù)隊(duì)列的平均長(zhǎng)度。 三個(gè)數(shù)值分別為 1分鐘、5分鐘、15分鐘前到現(xiàn)在的平均值。 |
步驟二:找出最耗CPU的線程
- top -Hp 10765 顯示一個(gè)進(jìn)程的線程運(yùn)行信息列表
- 鍵入shift +p 線程按照CPU使用率降序排序
命令: printf '%x' 10765 輸出結(jié)果:2a0d
步驟四: 使用JVM命令 jstatck
jstack 10765 | grep '2a0d' -C5 --color 打印堆棧信息,通過(guò)id 過(guò)濾到線程的堆棧信息。
以下是top 其它常用命令:
附常用操作:
top //每隔5秒顯式所有進(jìn)程的資源占用情況
top -d 2 //每隔2秒顯式所有進(jìn)程的資源占用情況
top -c //每隔5秒顯式進(jìn)程的資源占用情況,并顯示進(jìn)程的命令行參數(shù)(默認(rèn)只有進(jìn)程名)
top -p 1111 -p 6789//每隔5秒顯示pid是1111和pid是6789的兩個(gè)進(jìn)程的資源占用情況
top -d 2 -c -p 1111//每隔2秒顯示pid是1111的進(jìn)程的資源使用情況,并顯式該進(jìn)程啟動(dòng)的命令行參數(shù)