Linux定位java內存或cpu問題

// 找到佔用資源最多的進程
top
  • top後面的參數-c可以顯示進程詳細的信息。top命令執行的時候還可以執行一些快捷鍵:
  • 1,對於多核服務器,可以顯示各個CPU佔用資源的情況
  • shift+h 顯示所有的線程信息
  • shift+w 將當前 top 命令的設置保存到~/.toprc 文件中,這樣不用每次都執行快捷鍵了

在這裏插入圖片描述

// 查看系統維度的CPU負載,1s統計一次數據
vmstat -n 1
// 

在這裏插入圖片描述

  • load average:cpu負載,三個數字代表系統在過去1分鐘、5分鐘、15分鐘內運行進程隊列中的平均進程數量。理想情況下,每個 CPU 應該滿負荷工作,並且沒有等待進程,此時,平均負載 = CPU 邏輯核數。在實際生產系統中,不建議系統滿負荷運行。通用的經驗法則是:平均負載 = 0.7 * CPU 邏輯核數。/proc/cpuinfo 文件中讀取 CPU 信息
  • us:用戶模式消耗的 CPU 時間百分比。該值較高時,說明用戶進程消耗的 CPU 時間比較多,比如,如果該值長期超過 50%,則需要對程序算法或代碼等進行優化。
  • sy:內核模式消耗的 CPU 時間百分比。
  • wa:IO 等待消耗的 CPU 時間百分比。該值較高時,說明 IO 等待比較嚴重,這可能磁盤大量作隨機訪問造成的,也可能是磁盤性能出現了瓶頸。
  • id:處於空閒狀態的 CPU 時間百分比。如果該值持續爲 0,同時 sy 是 us 的兩倍,則通常說明系統則面臨着 CPU 資源的短缺。
// 查看由進程啓動的線程使用資源情況
top -p 31071 -H

在這裏插入圖片描述

jstack -l 31071 > stack.log
// 將線程的tpid轉爲16進制,到stack.log中查找
printf "%x \n" 31093
grep 31093 stack.log -a3

引用的博客
CPU平均負載爲多少更合理?
linux CPU佔用飆升的排查方法
Linux cpuinfo 詳解
發佈或重啓線上服務時抖動問題解決方案
JVM故障分析及性能優化系列

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章