一次JVM GC長暫停的排查過程

現(xiàn)象

通過CAT埋點,發(fā)現(xiàn)在35~36分鐘時候,出現(xiàn)JVM的GC耗時異常

通過跳板機登錄機器,找到GC日志進行查看,如下圖

在顯示的最后一行中,我們看到其中user=0,sys=0,real=4.31s,表示JVM經歷了長達4s多的STW,也即在這段時間內,該機器是無法對外提供服務的,請求到達該機器,最終只能超時返回。

排查

根據經驗,這種 real > user + sys 的情況,大概率是內存的swap和密集型的IO造成的,可以順著這個思路進行排查,這時候就突顯了系統(tǒng)監(jiān)控的重要性了,通過查看IO監(jiān)控

我們可以發(fā)現(xiàn),在對應的時間上確實存在大量的IO操作。

為什么頻繁IO會引起長時間GC

在發(fā)生GC時,需要把相關數(shù)據寫入GC日志,在寫入期間,因為write()系統(tǒng)調用導致了暫停。這種日志的寫操作,即使在異步、緩存IO或非阻塞IO模式下,還是有可能因為系統(tǒng)機制(比如頁面緩存的回寫),導致長時間的阻塞。

如何減輕因為IO造成的影響?

可以將Java日志文件移動到一個單獨的或高性能的磁盤驅動器(例如SSD, tmpfs)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 2018.02.21 編號28 日精進629天 今日感悟: 1重復做的事會出錯,就是因為對此事交給的不夠! 2看一...
    宇宙之愛黃昊貴閱讀 272評論 0 0
  • 我元旦居然居然忘記去參加一個朋友的婚禮?。?!果然是一孕傻三年啊~沒辦法,又要工作又要陪娃,兩手抓兩手都要硬...
    咖啡貓隊長閱讀 487評論 0 6
  • ‘’傳說妖魔總在白晝與黑夜交替時大行其道,這一時刻,就是逢魔時刻?!?江歌案一審落定,陳世峰被判有期徒刑20年。...
    天清島閱讀 615評論 0 0

友情鏈接更多精彩內容