JVM如何线上调优?

发布时间 2023-12-30 22:06:49作者: 阿飞藏泪

晚上8点是我和们的业务高峰,—到高峰的时候,发现TP8的蚝时会变高,有明显的手剩,通过排查发现内存使用率也会增大,然后再释放,其他各项指标证正常,于是怀疑是GC导致的,观察服务器的GC情况,发现yongGC情况如下,大概每5分钟,GC55次,峰值最高可以达到20次。FiulGC比较频繁,每5分钟大概0.5次,峰值8次。那么问题在于Ful c烦繁,而且youngCC峰值也很高.

FllC场案,那么会教发stpte or ,此时会导钱我门的系恃进行停顿,这个可能是导致我们的系统pe转时上升的主要原因。由于并发很高,我们的YoungGC频繁,那么可能会造成,我们有些本应该在YoungGC就回收的对象,没有回收成功,直接进入了老年代,由于对象的晋升,导致了我们的老年代继续触发FulGC。于是峰值变高。

目标1、 YoungGC次数减少2、YoungGC耗时减少3、FullGC不超过6次一天4、FucllGC耗时减少

1.先看垃圾收集器我知门的以水版本为8,并且这个服务未指定特的收集器,所以击的是我和们助认的收集器组合,年轻代为Perele savenge,老年代为Parala Od、这两种并行收集器的组合提高了系统的吞吐量,而不是低延迟配比,我们首先应该换一个低延迟的收集器。低正迟的组合,我们选择ParNew与CMS的组合,如果jdk的版本高,其实也可以选择G1或者ZGC。

2、年轻代参数于置-Xms40.6M Aomoko061n.mn102AM0以上的于置只配了堆的大小,像我们年轻代的占比都是走的默认的,.JX.SrioRalie8,也就是4G0.2。总共0.8G。这个就比较小了,观嚓了一下老年代的缘占用空间,大概是1.g,也就是说有一些空间其实是空闲的,那么当我们年轻代的空间小,而且并发大的时候,年轻代的对象会激增,并且晋升到老年代。然而收集器Peralel0d又会导致stw,无法与用户线程并行,那么就会造成我们的服务停顿,TP99升高。