JVM调优实战之三种垃圾收集器组合性能比较(GC Easy日志分析)

指标参数
机器8C16G
操作系统Linux
WEB服务器Tomcat

首先我们根据Java Performance推荐公式配置最优GC参数
performance.png
Xmx和Xms设置为老年代存活对象的3-4倍,即Full GC之后老年代内存占用的3-4倍
永久代(元空间)设置为老年代存活对象的1.2-1.5倍
Xmn设置为老年代存活对象的1-1.5倍
老年代内存大小设置为老年代存活对象的2-3倍
image.png
经过测试发现Full GC后老年代内存占用为136m左右,所以设置Xms和Xmx为512m,Xmn设置为192m

吞吐量优先

GC参数设置

#初始堆大小/最大堆大小/新生代大小/元空间大小/元空间最大允许大小/线程栈大小
-Xms512m -Xmx512m -Xmn192m -XX:MetaspaceSize=192m -XX:MaxMetaspaceSize=320m -Xss512k
#垃圾回收器(ps和po)
-XX:+UseParallelGC  -XX:+UseParallelOldGC
#统计GC信息
-XX:PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:${BASE_DIR}/logs/gc-ps-po.log

查看JVM参数信息:jmap -heap pid
image.png

压测接口

线程组配置1600*5000
image.png
花费共29min13s

吞吐量

image.png
平均吞吐量为4564.6

RT

image.png
平均响应时间为348ms

TPS

image.png

GC统计信息

grafana+prometheus监控图
image.png
GC Easy进行gc日志分析
image.png
image.png
image.png
image.png

堆内存统计信息

image.png
image.png
image.png

结果分析

GC总耗时:63.326s
Young GC总耗时:61.246s
Full GC总耗时:2.080s
最大GC停顿时间:210ms

响应时间优先

GC参数设置

#初始堆大小/最大堆大小/新生代大小/元空间大小/元空间最大允许大小/线程栈大小
-Xms512m -Xmx512m -Xmn192m -XX:MetaspaceSize=192m -XX:MaxMetaspaceSize=320m -Xss512k
#垃圾回收器(ParNew和CMS)
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC
#统计GC信息
-XX:PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:${BASE_DIR}/logs/gc-parnew-cms.log

查看JVM参数信息:jmap -heap pid
image.png

压测接口

线程组配置1600*5000
image.png
花费共30min22s

吞吐量

image.png
平均吞吐量为4392.0

RT

image.png
平均响应时间为361ms

TPS

image.png

GC统计信息

grafana+prometheus监控图
image.png
GC Easy进行GC日志分析
image.png
image.png
image.png
image.png
image.png

堆内存统计信息

image.png
image.png
image.png

结果分析

GC总耗时:55.627s
Young GC总耗时:55.627s
Full GC总耗时:0s
最大GC停顿时间:90ms

全功能垃圾收集器

GC参数设置

#初始堆大小/最大堆大小/元空间大小/线程栈大小
-Xms2048m -Xmx2048m -XX:MetaspaceSize=128m -Xss512k
#垃圾回收器(G1)/期望最大停顿时间
-XX:+UseG1GC  -XX:MaxGCPauseMillis=80
#统计GC信息
-XX:PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:${BASE_DIR}/logs/gc-g1.log

查看JVM参数信息:jmap -heap pid
image.png

压测接口

线程组配置1600*5000
image.png
花费共27min37s

吞吐量

image.png
平均吞吐量为4828.7

RT

image.png
平均响应时间为329ms

TPS

image.png

GC统计信息

grafana+prometheus监控图
image.png
GC Easy进行GC日志分析
image.png
image.png
image.png
image.png

堆内存统计信息

image.png
image.png
image.png

结果分析

GC总耗时:14.630s
最大GC停顿时间:80ms

结论

指标吞吐量TPS/s响应时间(ms)GC总耗时(s)最大GC停顿时间(ms)
吞吐量优先98.134%4564.634863.326210
响应时间优先97.112%4392.036155.62790
全功能99.138%4828.732914.63080

在低延时接口下,三者对比性能其实没有很大差别,但相对来说,使用G1垃圾回收器性能明显会更优于其他两种策略,但是G1适用于堆内存较大的场景,我们还是需要具体场景具体分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

07feng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值