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

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