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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java应用cpu使用率过高问题排查

發布時間:2024/4/17 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java应用cpu使用率过高问题排查 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

---------------------------------------linux下如何定位代碼問題-------------------------------

1、先通過top命令找到消耗cpu很高的進程id假設是123

2、執行top -p 123單獨監控該進程

3、在第2步的監控界面輸入H,獲取當前進程下的所有線程信息

4、找到消耗cpu特別高的線程編號,假設是123

5、執行jstack 123456對當前的進程做dump,輸出所有的線程信息

6?將第4步得到的線程編號11354轉成16進制是0x7b

7?根據第6步得到的0x7b在第5步的線程信息里面去找對應線程內容

8?解讀線程信息,定位具體代碼位置

-----------------------------分割線----------------------------------------------

?

最近在壓力測試工作中碰到java應用某臺機器cpu比較高的情況,特地下筆記以后總結:

一個簡單的淘寶認證接口 需要插入讀寫數據庫2次。每次爬取數據,入庫。完成。

正常情況下:

應用使用cpu在 :50%--80%

壓力高--異常情況下:

cpu利用率在:90%---90%

在網上查了下,一般java應用cpu過高基本上是因為

1.程序計算比較密集

2.程序死循環

3.程序邏請求堵塞
4.IO讀寫太高?

方法一:

分析步驟:

1.登陸應用機器,top -d 1命令查看 當前占用cpu資源最多的,一般排名第一位肯定是java進程

一般也可能存在多個java進程?

?

?

觀察 top 消耗第一的資源是PID=1679的線程

2.查看進程的哪個線程占用cpu比較高,取線上另外一臺正常情況下利用cpu比較高的應用:通過

ps -mp pid -o THREAD,tid,time命令查看該進程的線程情況

?

?

通過以上線程CPU切片 耗時在pid=1679 Tid =1896 耗時 1分59秒,4%CPU占用最大。時間最長。

TID為1679的線程利用cpu資源比較多,怎么能看到這個線程在干什么呢?

需要將1896?轉換為16進制,便于在jvm堆棧中查找。

printf "%x\n" 1896 ? ----768

通過jstack命令來查看下當前內存狀態:

?

?定位到cpu過高是IO讀寫太高 ,接下來就是找開發人員確認這段代碼是否可以優化。

?

方法二:

在做壓測的時候,開發給了一個工具 ?show-busy-java-threads.sh

在排查Java的CPU性能問題時,找出Java進程中消耗cpu多(top us值過高)的線程,查看它的線程棧,從而找出有性能問題的方法調用。

####截取一段

#!/bin/bash # @Function # Find out the highest cpu consumed threads of java, and print the stack of these threads. # # @Usage # $ ./show-busy-java-threads.sh # # @author Jerry Leereadonly PROG=`basename $0` readonly -a COMMAND_LINE=("$0" "$@")usage() {cat <<EOF Usage: ${PROG} [OPTION]... Find out the highest cpu consumed threads of java, and print the stack of these threads. Example: ${PROG} -c 10...................后面略

其實就是個shell文件,把這個文件上傳到目標服務器(linux),記得更改文件的讀寫權限:?chmod -R 777 ?show-busy-java-threads.sh

接方法一 ?top之后,只需要下命令 :./show-busy-java-threads.sh -p pid ?后面CPU占用高的定位就分析出來了,具體如圖?

?

轉載于:https://www.cnblogs.com/Alexr/p/9361491.html

總結

以上是生活随笔為你收集整理的java应用cpu使用率过高问题排查的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。