国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JVM-Cpu飆升排查及解決

這篇具有很好參考價值的文章主要介紹了JVM-Cpu飆升排查及解決。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

https://blog.csdn.net/m0_37542440/article/details/123679011

1. 問題情況
在服務(wù)器上執(zhí)行某個任務(wù)時,系統(tǒng)突然運行緩慢,top 發(fā)現(xiàn)cpu飆升,一度接近100%,最終導(dǎo)致服務(wù)假死。

2. 問題排查
1. 執(zhí)行 “top” 命令:查看所有進程占系統(tǒng)cpu的排序,極大可能排第一的就是自己的java進程,pid就是進程號。

2. 執(zhí)行 “top -Hp 進程號” 命令:查看java進程下的所有線程占cpu情況。

3. 執(zhí)行 “printf "%x\n" 10” 命令:后續(xù)查看線程堆棧信息展示的都是十六進制,為了找到咱們的線程堆棧信息,需要把線程號轉(zhuǎn)為16進制。例如,printf "%x\n 10-》打?。篴,那么在jstack中線程號就是0xa。

4. 執(zhí)行 “jstack 進程號 | grep 線程id” 命令:查找某進程下-》線程id(jstack堆棧信息中的nid)=0xa的線程狀態(tài)。如果“"VM Thread" os_prio=0 tid=0x00007f871806e000 nid=0xa runnable”,第一個雙引號圈起來的就是線程名,如果是“VM Thread”這就是虛擬機GC回收線程了。

5. 執(zhí)行 “jstat -gcutil 進程號 統(tǒng)計間隔毫秒 統(tǒng)計次數(shù)(缺省代表一致統(tǒng)一)”,查看某進程GC持續(xù)變化情況,如果發(fā)現(xiàn)返回中FGC很大且一直增大,確認Full GC 也可以使用“jmap -heap 進程ID”,查看一下進程堆內(nèi)是不是要溢出了,特別是老年代內(nèi)從使用情況一般是到達閾值(具體看垃圾回收器和啟動配置的閾值)就回晉城Full GC。

6. 執(zhí)行 “jmap -dump:format=b,file=filename 進程ID”,導(dǎo)致某進程下內(nèi)存heap輸出到文件中,可以通過eclipse的mat工具查看內(nèi)存中有哪些對象比較多。

6-1. jmap?

jmap -dump:live,format=b,file=live_web_dump.hprof 22260

借鑒:JVM調(diào)優(yōu)命令-jmap - 鈺火 - 博客園

3. 原因分析
1. 內(nèi)存消耗過啊,導(dǎo)致Full GC次數(shù)過多

執(zhí)行步驟1-5:

多個線程的CPU都超過了100%,通過jstack命令可以看到這些線程主要是垃圾回收線程-》上一節(jié)步驟2
通過jstat命令監(jiān)控GC情況,可以看到Full GC次數(shù)非常多,并且次數(shù)在不斷增加。--》上一節(jié)步驟5
確定是Full GC,接下來找到具體原因:

生成大量的對象,導(dǎo)致內(nèi)存溢出-》執(zhí)行步驟6,查看具體內(nèi)存對象占用情況。
內(nèi)存占用不高,但是Full GC次數(shù)還是比較多,此時可能是代碼中手動調(diào)用 System.gc()導(dǎo)致GC次數(shù)過多,這可以通過添加 -XX:+DisableExplicitGC來禁用JVM對顯示GC的響應(yīng)。
2.代碼中有大量消耗CPU的操作,導(dǎo)致CPU過高,系統(tǒng)運行緩慢;

執(zhí)行步驟1-4:在步驟4jstack,可直接定位到代碼行。例如某些復(fù)雜算法,甚至算法BUG,無限循環(huán)遞歸等等。

3.由于鎖使用不當,導(dǎo)致死鎖。

執(zhí)行步驟1-4: 如果有死鎖,會直接提示。關(guān)鍵字:deadlock.步驟四,會打印出業(yè)務(wù)死鎖的位置。

造成死鎖的原因:最典型的就是2個線程互相等待對方持有的鎖。

4.隨機出現(xiàn)大量線程訪問接口緩慢。

代碼某個位置有阻塞性的操作,導(dǎo)致該功能調(diào)用整體比較耗時,但出現(xiàn)是比較隨機的;平時消耗的CPU不多,而且占用的內(nèi)存也不高。

思路:

首先找到該接口,通過壓測工具不斷加大訪問力度,大量線程將阻塞于該阻塞點。

5.某個線程由于某種原因而進入WAITING狀態(tài),此時該功能整體不可用,但是無法復(fù)現(xiàn);

執(zhí)行步驟1-4:jstack多查詢幾次,每次間隔30秒,對比一直停留在parking 導(dǎo)致的WAITING狀態(tài)的線程。例如CountDownLatch倒計時器,使得相關(guān)線程等待->AQS(AbstractQueuedSynchronizer AQS框架源碼剖析)->LockSupport.park()。文章來源地址http://www.zghlxwxcb.cn/news/detail-612152.html

到了這里,關(guān)于JVM-Cpu飆升排查及解決的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • java 應(yīng)用cpu飆升(超過100%)故障排查

    java 應(yīng)用cpu飆升(超過100%)故障排查

    害。。。 昨天剛寫完一份關(guān)于jvm問題排查相關(guān)的博客,今天線上項目就遇到了一個突發(fā)問題。 現(xiàn)象是用戶反映系統(tǒng)非??ǎ瑹o法操作。 然后登錄服務(wù)器查看發(fā)現(xiàn)cpu 一直100%以上。 發(fā)現(xiàn)線上pid 29737的 java應(yīng)用cpu達到100% 輸入上述命令,然后按H顯示cpu最高排名的線程??梢钥吹?/p>

    2023年04月26日
    瀏覽(35)
  • Java線上服務(wù)CPU、內(nèi)存飆升問題排查步驟!

    Java線上服務(wù)CPU、內(nèi)存飆升問題排查步驟!

    作為一名從事Java開發(fā)快一年的程序員,在線上經(jīng)常碰到 某個模塊的Pod發(fā)出CPU與內(nèi)存告警的問題 ,而這些問題會導(dǎo)致系統(tǒng)響應(yīng)緩慢甚至是服務(wù)不可用。一般情況下可以通過 重啟 或者 調(diào)高Pod的資源量或者增加Pod數(shù)量 暫時解決問題,但這是治標不治本的,只有找到問題發(fā)生的原

    2024年02月16日
    瀏覽(47)
  • JVM問題排查

    JVM問題排查

    本文詳細說明了Java應(yīng)用運行過程中幾種常見的JVM相關(guān)問題,并給出了問題排查步驟。 現(xiàn)象 :Java線程負載過高,JVM內(nèi)存幾乎占滿,甚至拋出java.lang.OutOfMemoryError錯誤。 思路 :通過jmap能查看到對內(nèi)存中實例,可以查看到哪些類的實例比較多,排查出OOM原因。 工具 :jmap 步驟

    2024年02月09日
    瀏覽(14)
  • jvm堆外內(nèi)存排查詳解

    jvm堆外內(nèi)存排查詳解

    內(nèi)存泄漏想必大家并不陌生,對于jvm的內(nèi)存泄漏,有很多排查手段和方便的排查工具,例如MAL,但是對于非jvm的內(nèi)存,如直接內(nèi)存的使用,排查起來較為麻煩,下面介紹一下相關(guān)的排查手段 在一次內(nèi)存檢查的過程中,意外發(fā)現(xiàn)在linux的java進程內(nèi)存占用,遠高于jvm的內(nèi)存設(shè)定最

    2024年02月08日
    瀏覽(34)
  • 【JVM】Java內(nèi)存泄露的排查思路?

    【JVM】Java內(nèi)存泄露的排查思路?

    Java內(nèi)存泄露(Memory Leak)是指在Java程序中,無用的對象占用了 堆內(nèi)存 ,但無法被垃圾回收器回收釋放,從而導(dǎo)致可用內(nèi)存逐漸減少,最終可能導(dǎo)致內(nèi)存耗盡或性能下降的問題。 說明一般對于內(nèi)存泄漏。都是針對 堆 的。 程序一般出現(xiàn)內(nèi)存泄漏會有 兩個狀態(tài) 一是一啟動導(dǎo)致

    2024年02月13日
    瀏覽(24)
  • jvm cpu 高定位

    jvm cpu 高定位

    快速的發(fā)現(xiàn)線程cpu高, 最終發(fā)現(xiàn)是gc線程, 最終去分析jvm ?top -o %CPU top -Hp108920 ?jmap -dump:format=b,file=heap.bin 108920 jvm 命令和工具_個人渣記錄僅為自己搜索用的博客-CSDN博客 $ jstat -gcold 108920 MC MU CCSC CCSU OC OU YGC FGC FGCT GCT 218368.0 212670.3 25344.0 23913.0 2355200.0 2355200.0 1191 9925 7594.058 7691.

    2024年02月08日
    瀏覽(17)
  • JVM筆記 —— 出現(xiàn)內(nèi)存溢出錯誤時時如何排查

    JVM筆記 —— 出現(xiàn)內(nèi)存溢出錯誤時時如何排查

    內(nèi)存溢出錯誤分為StackOverflowError和OutOfMemoryError,前者是棧中出現(xiàn)溢出,后者一般是堆或方法區(qū)出現(xiàn)溢出,簡稱OOM 1. 棧溢出 StackOverflowError 棧溢出一般都是因為沒有正確的結(jié)束遞歸導(dǎo)致的,無限遞歸導(dǎo)致超出棧內(nèi)存(-Xss)限制時就會拋出StackOverflowError。這種情況直接根據(jù)異常

    2024年02月13日
    瀏覽(24)
  • 【Jvm】性能調(diào)優(yōu)(上)線上問題排查工具匯總

    【Jvm】性能調(diào)優(yōu)(上)線上問題排查工具匯總

    產(chǎn)品閉環(huán) 產(chǎn)品閉環(huán)是能夠讓 用戶主動迭代促進產(chǎn)品發(fā)展的方式 。例如一些內(nèi)容產(chǎn)品,比如 糗事百科 ,種子用戶 產(chǎn)出高質(zhì)量內(nèi)容 ,舉報與贊起到 篩選內(nèi)容 ,提高內(nèi)容質(zhì)量的作用, 內(nèi)容質(zhì)量的提升有助于吸引更多用戶 。 這就是產(chǎn)品閉環(huán), 產(chǎn)品給予用戶需求解決方法,用戶

    2024年02月20日
    瀏覽(30)
  • 【Jvm】性能調(diào)優(yōu)(下)線上問題排查思路匯總

    【Jvm】性能調(diào)優(yōu)(下)線上問題排查思路匯總

    【Jvm】性能調(diào)優(yōu)(上)線上問題排查工具匯總 【Jvm】性能調(diào)優(yōu)(中)Java中不得不了解的OOM Error 標準參數(shù)(-) :所有的JVM實現(xiàn)都必須實現(xiàn)該功能且向后兼容 非標準參數(shù)(-X) : 默認Jvm實現(xiàn)該功能 ,但是不保證所有jvm實現(xiàn)都滿足,且 不保證向后兼容 非穩(wěn)定參數(shù)(-XX) : 各

    2024年02月21日
    瀏覽(21)
  • MySQL數(shù)據(jù)庫CPU飆升到100%解決方案

    當cpu飆升到100%時,先用操作系統(tǒng)命令top命令觀察是不是mysqld占用導(dǎo)致的,如果不是,找出占用高的進程,并進行相關(guān)處理。 進入mysql命令行 查看慢查詢SQL是否啟用:ON是開啟,OFF是關(guān)閉。 show variables like ‘log_slow_queries’; 開啟慢查詢?nèi)罩?set global log_slow_queries = on; 如果是mysql

    2024年02月16日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包