1. 程式人生 > >java日常問題排查1

java日常問題排查1

堆棧 要去 產生 日常 目錄 pan spa ima tin

有關CPU占用高的問題

掌握一些常用命令 jstack jmap jps ps -ef 等等

top 命令查看CPU使用情況 PID為進程號

技術分享圖片

執行 ps -ef | grep 18201 找到具體進程

技術分享圖片

涉及公司圖片不能泄露,以本機任意一個進程代替,這個命令會出現兩個結果,第二個是剛才執行“ ps -ef | grep 18201 ” 產生的

查看所有容器 sudo docker ps -a

進入容器 sudo docker exec -it 容器ID bash

再次使用TOP命令

技術分享圖片

jstack打印堆棧信息

sudo -u admin /xxx/java/bin/jstack -l 34 > /localhost/stack.log

或者 sudo -u admin /xxx/java/bin/jstack `jps |grep Bootstrap |awk ‘{print $1}‘`> /localhost/stack.log

註意點:1、jstack需要絕對路徑

2.jstack 是jstack是java虛擬機自帶的一種堆棧跟蹤工具,一定要去java/bin 目錄下使用該命令

分析jstack日誌

執行 top -H p 進程ID 得到 具體線程ID

線程ID換算成16進制,在jstack日誌中找對應的nid,例如nid=0x70,線程目前是 Waiting on condition,通過堆棧信息找到是哪一行代碼的問題

  1. 死鎖,Deadlock(重點關註)
  2. 執行中,Runnable
  3. 等待資源,Waiting on condition(重點關註)
  4. 等待獲取監視器,Waiting on monitor entry(重點關註)
  5. 暫停,Suspended
  6. 對象等待中,Object.wait() 或 TIMED_WAITING
  7. 阻塞,Blocked(重點關註)
  8. 停止,Parked

技術分享圖片



java日常問題排查1