Java程序CPU飙升排查,找出死循环代码
生活随笔
收集整理的這篇文章主要介紹了
Java程序CPU飙升排查,找出死循环代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
windows環境下cpu飆升問題
線上某臺runtime機器(windows Server)cpu報警,這種情況初步就是代碼里面死循環了,先把機器下線了保證不再有新的任務分配進來,然而cpu使用依然不降這是正常的因為程序未結束死循環一直在運行。
找pid的方法是:打開任務管理器,然后點擊 “查看” 菜單,然后點擊 “選擇列”,把pid勾上,然后就可以在任務管理器里面看到所有進程的pid值了。(也可以用第三步中提到的工具直接查看),windows10系統可以在詳細信息直接查看
把Java進程導出快照。
jstack -l pid > c:/31372.stack
在windows下只能查看進程的cpu占用率,要查看線程的cpu占用率要借助其他的工具,可以使用微軟提供的 Process Explorer(點擊前往下載頁面)
linux環境下cpu飆升問題
使用如下命令找到最耗CPU的進程,然后再按一下 1,就會顯示你服務器邏輯CPU的數量以及現在服務器CPU各個參數。占用最高的排在前面,我們可以看到占用高的ava進程
top -c
找出占用高的Java線程,顯示一個進程的線程運行信息列表,按一下P查看最高占用
top -Hp pid
jstack pid > error.log
目標線程pid轉16進制
printf “%x\n” pid
查找error.log中pid16進制轉化后的位置
grep pid error.log –color
總結
以上是生活随笔為你收集整理的Java程序CPU飙升排查,找出死循环代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python字典{}
- 下一篇: java美元兑换,(Java实现) 美元