cpu飆高處理步驟(linux)

cpu飆高處理步驟

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.線程太多

CPU 飈高

一般是死循環或者死鎖問題導致。

  1. 通過 top 命令找到 CPU 消耗最高的進程,並記住進程 ID {pid}。
    top -M -n 2 -d 3 >{pid}/top.txt 查看top

  2. 再次通過 top -Hp {pid} 找到 CPU 消耗最高的線程 ID,並記住線程 ID(十進制).

3.通過 JDK 提供的 jstack 工具 dump 線程堆棧信息到指定文件中。
jstack {pid} >{pid}/jstack_1.txt 一次堆棧快照 備用

jstack {pid} >{pid}/jstack_2.txt 兩次堆棧快照 備用

由於剛剛的線程 ID 是十進制的,而堆棧信息中的線程 ID 是16進制的,因此我們需要將10進制的轉換成16進制的,並用這個線程 ID 在堆棧中查找。
使用 printf “%x\n” [十進制數字] ,可以將10進制轉換成16進制。
通過剛剛轉換的16進制數字從堆棧信息裏找到對應的線程堆棧。就可以從該堆棧中看出端倪。

發佈了12 篇原創文章 · 獲贊 8 · 訪問量 942
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章