zgc Allocation Stall問題


情況一、內存空間不足

對比監控出現性能毛刺時間點的GC日志和業務日志,發現JVM停頓了較長時間,且停頓時GC日志中有大量的“Allocation Stall”日志。

原因就是堆內存被占滿,導致部分線程阻塞,如下圖中的 High used已經達到100%

 

 

 

 解決辦法:

1.最直接有效的辦法就是增加堆大小

2.增加jvm參數 -XX:ZAllocationSpikeTolerance。調整正態分布模型預測系數ZAllocationSpikeTolerance默認值為2,值越大,越早的觸發GC。優化后設置成5,xmx和xms可以考慮設置成不一樣的值

3.還可以嘗試 增加固定gc間隔 -XX:ZCollectionInterval 參數

 

情況二、gc初始化空間不足

背景:一個62G物理機上部署了2個24G的xmx的java進程

發生Application的時候,前后都沒有占到情況一中占用達到100%的情況

原因:觀察gc日志,在初始化階段發現

 

 可以看出,jvm的堆初始化的時候,tmpfs -> /dev/shm 下面的可用空間不足(當然和具體的機器有關)。。限制一下其他使用tmpfs地方或者調整一下tmpfs大小

 

最后附上一篇zgc調優:https://tech.meituan.com/2020/08/06/new-zgc-practice-in-meituan.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM