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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java cpu过高排查_涨薪秘籍:JAVA项目排查cpu负载过高

發(fā)布時間:2023/12/1 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java cpu过高排查_涨薪秘籍:JAVA项目排查cpu负载过高 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景

我負責的其中一個項目在空負載的情況下,CPU占用率依然保持著100%左右,線上、測試、開發(fā)的服務都一樣;是什么導致的呢?在開發(fā)環(huán)境我查看了請求流量,這個流量可以忽略但CPU占用率一直在60%-100%之間浮動。

分析問題

流量可以忽略,但CPU占用依然極其高說明不是請求多導致的資源占用,原因應該是項目本身自發(fā)導致的;自發(fā)包括定時任務與死循環(huán),而具體哪一段代碼現(xiàn)在也確定不了。現(xiàn)在我們就可以借助原生的jdk分析工具來定位是項目哪塊出現(xiàn)了問題(你可以用更高級的jprofilter等,一連接,問題一目了然),以下我就采用jdk自帶工具jstack、jstat 、jmap等來逐步定位。

定位問題

  • 在Linux環(huán)境下用top查看cpu、內(nèi)存等資源占用情況(可采用: top -p pid 具體查看某個應用)。發(fā)現(xiàn)pid=4179的java應用占用cpu很高
  • 查看pid=4179的應用各個線程占用cpu的時間片情況:ps -mp 4179 -o THREAD,tid,time (ps -mp pid -o THREAD,tid,time)。發(fā)現(xiàn)tid =4528的線程一直長時間占有著cpu并且占用率達100%
  • 將 4528轉為16進制,便于在堆棧信息中查詢定位代碼塊:printf "%x" 4528,轉成16進制為 11b0
  • 在堆棧信息中定位報錯代碼塊:jstack 4179|grep 11b0 -A 30 ( jstack pid|grep TID(16進制) -A 30 )

總結

從堆棧信息中我們可以看到是 WAITING導致,這個說明有一個線程長時間占用資源,而其他線程一直處于等待的狀態(tài)。最終定位出是在一個分布式鎖實現(xiàn)的模塊中有一個保持鎖的代碼塊有問題。然后通過優(yōu)化這個分布式鎖最終解決了這個問題。通過此次優(yōu)化,大大節(jié)省出了服務器資源(目前這個系統(tǒng)在線上是4臺集群,相當于節(jié)省了1*4 個cpu,如果是一個上百甚至上千的集群,那么這個資源占用是無法想象的),最主要的是避免了這種情況對系統(tǒng)本身的影響,避免了對正常請求的阻塞。

最后送給大家一個美女啦程序員很辛苦的偶爾需要犒勞一下自己

總結

以上是生活随笔為你收集整理的java cpu过高排查_涨薪秘籍:JAVA项目排查cpu负载过高的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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