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)程號(hào) top -Hp 12133
這里的PID是線程ID,可以看到,有幾個(gè)線程CPU占用過高。
3.將線程ID轉(zhuǎn)成16進(jìn)制
printf '0x%x\n' 5421
4.通過jstack命令查看線程堆棧
# 12113-進(jìn)程號(hào) # 0xc81-上面查到的16進(jìn)制線程號(hào) jstack 12113|grep 0xc81 -A 20
通過堆棧信息,找到具體的代碼,分析原因。
Linux如何定位Java進(jìn)程CPU利用率過高原因
首先通過Top命令查看占用CPU較高的進(jìn)程PID,執(zhí)行Top之后按1可以查看每個(gè)核占用比例
top
這里由于我是用的虛擬機(jī),即使我的Java進(jìn)程占用CPU很高也只是占的虛擬機(jī)的,而對(duì)整個(gè)機(jī)器的CPU來說占的并不高。
這里我們找到了pid=7957
然后我們?cè)诟鶕?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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux如何實(shí)現(xiàn)斷點(diǎn)續(xù)傳文件功能
最近在工作中遇到一個(gè)需求,要實(shí)現(xiàn)Linux下的文件傳輸,支持?jǐn)帱c(diǎn)續(xù)傳,所以這篇文章主要給大家介紹了關(guān)于Linux如何實(shí)現(xiàn)斷點(diǎn)續(xù)傳文件功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2017-12-12Linux上創(chuàng)建、列出、刪除Docker容器方法總結(jié)
在本篇文章中小編給大家整理了一篇關(guān)于Linux上創(chuàng)建、列出、刪除Docker容器方法和技巧,需要的朋友們學(xué)習(xí)參考下。2019-03-03linux下如何查看java進(jìn)程內(nèi)存占用情況
這篇文章主要介紹了linux下如何查看java進(jìn)程內(nèi)存占用情況問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Linux密碼復(fù)雜度設(shè)置及登錄失敗策略設(shè)置方式
本文主要講述了如何在Ubuntu和CentOS系統(tǒng)中設(shè)置密碼規(guī)則、安裝crackilib模塊、修改PAM配置文件以增強(qiáng)安全性和限制登錄失敗次數(shù)等措施,以提高系統(tǒng)的安全性2024-12-12windows安裝openssh并通過生成SSH密鑰登錄Linux服務(wù)器
本文為大家詳細(xì)講解了在windows系統(tǒng)下安裝openssh并通過生成SSH密鑰登錄Linux服務(wù)器2018-10-10