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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

服务器CPU占用率过高问题分析

發(fā)布時間:2023/12/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务器CPU占用率过高问题分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在開發(fā)過程中,碰到了Java進(jìn)程占用cpu過高的現(xiàn)象,本篇來介紹一下排查思路。

1. 查看占用CPU過高Java進(jìn)程

使用 top -p <pid> 命令(為Java進(jìn)程的id號)查看Java進(jìn)程的cpu占用:

該Java進(jìn)程占用cpu達(dá)到100%。

top -p <pid>

2. 查看進(jìn)程是所有線程的情況

使用 top -Hp <pid> 命令(為Java進(jìn)程的id號)查看該Java進(jìn)程內(nèi)所有線程的資源占用情況:

  • 按shft+p按照cpu占用進(jìn)行排序,
  • 按shift+m按照內(nèi)存占用進(jìn)行排序
  • 此處按照cpu排序??梢钥吹?#xff0c;有線程占用cpu很高。

    top -Hp <pid>

    3. 查看線程的16進(jìn)制

    使用 printf "%x\n" <tid> 命令(tid指線程的id號)將以上10進(jìn)制的線程號轉(zhuǎn)換為16進(jìn)制:

    printf "%x\n" <tid>

    轉(zhuǎn)換后的結(jié)果分別為4ea0,由于16進(jìn)制以0x開頭,所以對應(yīng)的16進(jìn)制的線程號為0x4ea0。

    4. 獲取線程快照

    使用命令jstack獲取此時的線程快照并輸入到文件中: jstack -l <pid> > ./jstack_20201207001.txt 命令(為Java進(jìn)程的id號)來獲取線程快照結(jié)果并輸入到指定文件。

    jstack -l <pid> > ./jstack_20201207001.txt

    5. 在線程快照文件中查找指定線程

    查看生成的txt文件,在其中搜索tid為0x4ea0的線程:

    該線程的堆棧較深,且很明顯有調(diào)用我們自己代碼的邏輯,并且提示了具體的代碼行數(shù),我們查看該處代碼.

    總結(jié)

    top命令定位CPU高占用代碼

    步驟如下:

  • 使用top命令定位異常進(jìn)程??梢钥匆娪羞M(jìn)程的CPU占用率都非常高。
  • 使用top -Hp <進(jìn)程號>查看異常線程。
  • 使用printf "%x\n" <線程號>將異常線程號轉(zhuǎn)化為16進(jìn)制。
  • 使用jstack <進(jìn)程號>|grep <16進(jìn)制異常線程號> -A90 來定位異常代碼的位置(最后的-A90是日志行數(shù),也可以輸出為文本文件或使用其他數(shù)字)。也可以使用線程快件照生成文件的方式,可以看到異常代碼的位置。
  • 總結(jié)

    以上是生活随笔為你收集整理的服务器CPU占用率过高问题分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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