Linux系統(tǒng)java進(jìn)程CPU占用過高的問題及排查
Linux系統(tǒng)java進(jìn)程CPU占用過高
1.通過top命令查看,CPU占用高的進(jìn)程
top

2.查看該進(jìn)程下線程占用CPU情況
# 12133-進(jìn)程號 top -Hp 12133

這里的PID是線程ID,可以看到,有幾個線程CPU占用過高。
3.將線程ID轉(zhuǎn)成16進(jìn)制
printf '0x%x\n' 5421

4.通過jstack命令查看線程堆棧
# 12113-進(jìn)程號 # 0xc81-上面查到的16進(jìn)制線程號 jstack 12113|grep 0xc81 -A 20

通過堆棧信息,找到具體的代碼,分析原因。
Linux如何定位Java進(jìn)程CPU利用率過高原因
首先通過Top命令查看占用CPU較高的進(jìn)程PID,執(zhí)行Top之后按1可以查看每個核占用比例
top

這里由于我是用的虛擬機(jī),即使我的Java進(jìn)程占用CPU很高也只是占的虛擬機(jī)的,而對整個機(jī)器的CPU來說占的并不高。
這里我們找到了pid=7957
然后我們在根據(jù)pid找出占用CPU過高的線程
top -H -p 7957

然后根據(jù)線程id=7958使用strace -p命令查看調(diào)用情況

發(fā)現(xiàn)系統(tǒng)在不停的打印1然后把線程十進(jìn)制的線程id=7958轉(zhuǎn)換為十六進(jìn)制

最后抓取堆棧信息,查看代碼位置


我看找到了線程7958,并且定位到了Test.main第四行,我們打開代碼看看

總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
ubuntu20.04 LTS系統(tǒng)默認(rèn)源sources.list文件的修改
這篇文章主要介紹了ubuntu20.04 LTS系統(tǒng)默認(rèn)源sources.list文件的修改,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Linux中VirtualBox的虛擬機(jī)開機(jī)自啟方式
本文介紹如何通過創(chuàng)建start.sh腳本并設(shè)置開機(jī)自啟路徑,實(shí)現(xiàn)VirtualBox虛擬機(jī)的開機(jī)自動運(yùn)行,包含檢查運(yùn)行狀態(tài)、腳本編輯及權(quán)限配置步驟2025-09-09
linux系統(tǒng)下使用tcpdump進(jìn)行抓包方法
在本篇文章中小編給大家分享了關(guān)于linux系統(tǒng)下使用tcpdump進(jìn)行抓包的方法和相關(guān)知識點(diǎn),需要的朋友們學(xué)習(xí)下。2019-04-04
VIM實(shí)現(xiàn)文件快速跳轉(zhuǎn)插件詳解
這篇文章主要給大家介紹了關(guān)于VIM實(shí)現(xiàn)文件快速跳轉(zhuǎn)插件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用vim具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04
Apache的壓力測試以及web性能優(yōu)化的常用知識總結(jié)
這篇文章主要介紹了Apache的壓力測試以及web性能優(yōu)化的常用知識總結(jié),筆記由《構(gòu)建高性能web站點(diǎn)》這本高人氣書籍整理而來,需要的朋友可以參考下2015-12-12

