Java進(jìn)程cpu占用過高怎么辦-創(chuàng)新互聯(lián)

小編這次要給大家分享的是Java進(jìn)程cpu占用過高怎么辦,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供永登網(wǎng)站建設(shè)、永登做網(wǎng)站、永登網(wǎng)站設(shè)計(jì)、永登網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、永登企業(yè)網(wǎng)站模板建站服務(wù),十載永登做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

cpu是時(shí)分(time division)的,操作系統(tǒng)里有很多線程,每個(gè)線程的運(yùn)行時(shí)間由cpu決定,cpu會(huì)分給每個(gè)線程一個(gè)時(shí)間片,時(shí)間片是一個(gè)很短的時(shí)間長度,如果在時(shí)間片內(nèi),線程一直占有,則是100%;我們應(yīng)該意識(shí)到,cpu運(yùn)行速度很快(主頻非常高),除非密集型耗費(fèi)cpu的運(yùn)算,其它類型任務(wù)都會(huì)在小于時(shí)間片的時(shí)間內(nèi)結(jié)束。

產(chǎn)生CPU100%的原因:

某一程序一直占用CPU是導(dǎo)致CPU100%的原因,大概有以下幾種情況:

1、Java 內(nèi)存不夠或溢出導(dǎo)致GC overhead問題, GC overhead 導(dǎo)致的CPU 100%問題;

2、死循環(huán)問題. 如常見的HashMap被多個(gè)線程并發(fā)使用導(dǎo)致的死循環(huán), 或者死循環(huán);

3、某些操作一直占用CPU

第一步:使用top命令,查看占用cpu的進(jìn)程

[root@sdfsdfseZ codeimage]# top

Java進(jìn)程cpu占用過高怎么辦

第二步:ps -ef | grep java 或jps命令,找出服務(wù)器的所有java進(jìn)程

Java進(jìn)程cpu占用過高怎么辦

第三步:找出CPU耗用最厲害的進(jìn)程pid

Java進(jìn)程cpu占用過高怎么辦

第四步:查找出具體占用cpu利用率最厲害的線程號(hào),top -H -p pid 。然后按下shift+p,跳出CPU監(jiān)控
當(dāng)前線程號(hào)為:1747

Java進(jìn)程cpu占用過高怎么辦

第五步:將獲取到的線程號(hào)轉(zhuǎn)換成16進(jìn)制

因?yàn)閖ava線程棧文件中的線程id是十六進(jìn)制,需要將線程id從十進(jìn)制轉(zhuǎn)為十六進(jìn)制。十進(jìn)制 轉(zhuǎn)十六進(jìn)制的命令如下:

結(jié)果為:

Java進(jìn)程cpu占用過高怎么辦

第六步:導(dǎo)出線程棧

將具體的占用CPU過高的java進(jìn)程的線程棧導(dǎo)出,導(dǎo)出命令如下:

pid.tdump文件后綴名隨意,通常以tdump結(jié)尾。

[root@sdfsdfsdeZ codeimage]# jstack 1747 > tmp/1747.tdump

Java進(jìn)程cpu占用過高怎么辦

可能會(huì)拋出異常;

1747: Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding

原因分析

jvm運(yùn)行時(shí)會(huì)生成一個(gè)目錄hsperfdata_$USER($USER是啟動(dòng)java進(jìn)程的用戶),在linux中默認(rèn)是/tmp,目錄下會(huì)有些pid文件,存放jvm進(jìn)程信息,而jmap,jstack等工具會(huì)讀取/tmp/hsperfdata_$USER下的pid文件獲取連接信息.

檢查了/tmp/hsperfdata_root目,,但在$TOMCAT_HOME目錄中的temp目錄中有對(duì)應(yīng)的文件.

解決辦法

使用

[root@iZ2zeab8t820b5ywp0rkfeZ bin]# jstack 1706 > /tmp/hsperfdata_root/1706.tdump

第七步:導(dǎo)出堆

[root@sddsdfsaZ bin]# jstat -gcutil 1706

Java進(jìn)程cpu占用過高怎么辦

第八步:jvisualvm分析快照使用JAVA_HOME/bin/jvisualvm.exe,載入快照

文件----->載入—>文件類型(Dump)

Java進(jìn)程cpu占用過高怎么辦Java進(jìn)程cpu占用過高怎么辦

看完這篇關(guān)于Java進(jìn)程cpu占用過高怎么辦的文章,如果覺得文章內(nèi)容寫得不錯(cuò)的話,可以把它分享出去給更多人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站muchs.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站名稱:Java進(jìn)程cpu占用過高怎么辦-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://muchs.cn/article36/dshosg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷網(wǎng)站排名、網(wǎng)站改版、定制開發(fā)、微信公眾號(hào)、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)