日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java 进程100_原创:如何排查java进程cpu100%的问题

發(fā)布時(shí)間:2025/4/5 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 进程100_原创:如何排查java进程cpu100%的问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

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

某一程序一直占用CPU是導(dǎo)致CPU100%的原因,大概有以下幾種情況:1、Java 內(nèi)存不夠或溢出導(dǎo)致GC overhead問(wèn)題, GC overhead 導(dǎo)致的CPU 100%問(wèn)題;

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

3、某些操作一直占用CPU

第一步:使用top命令,查看占用cpu的進(jìn)程[root@sdfsdfseZ codeimage]# top

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

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

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

當(dāng)前線(xiàn)程號(hào)為:1747

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

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

結(jié)果為:

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

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

pid.tdump文件后綴名隨意,通常以tdump結(jié)尾。[root@sdfsdfsdeZ codeimage]# jstack 1747 > tmp/1747.tdump

可能會(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)程的用戶(hù)),在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

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

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

總結(jié)

以上是生活随笔為你收集整理的java 进程100_原创:如何排查java进程cpu100%的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。