内容提要
本文讨论了JVM GC性能测试中的递增流量方法。测试结果显示,J21-G1的极限峰值最高,能够支撑1100+ QPS,表现稳定;J21-Gen-ZGC在900 QPS以下响应更快。分析还发现,J21-G1几乎没有Full GC,表现优异。
延伸解读
测试方法:递增流量与独立压测
本次测试采用递增流量策略,各GC分组几乎同时开始,调用量从750逐步提升至1100 QPS,每个调用量持续10分钟。每个分组单独设定调用发量程序,避免相互影响。这种方法能更准确地找到各GC的极限峰值,并观察在超极限情况下的表现。
性能对比:J21-G1与J21-Gen-ZGC的差异
J21-G1极限峰值最高,能支撑1100+ QPS,且表现稳定;J21-Gen-ZGC在900 QPS以下响应更快,但超过1000 QPS时稳定性不如J21-G1。J21-G1的CPU使用率随QPS稳步上升,而J21-Gen-ZGC在1000 QPS时CPU接近100%,并开始频繁Young GC。
Full GC表现:J21-G1的突出优势
整个测试过程中,J21-G1几乎没有出现Full GC(仅两次),而J8-G1则频繁发生Full GC。J21-Gen-ZGC在后期因无法支撑超极限流量,Full GC次数反而减少。这表明J21-G1在内存回收方面更为高效,减少了长时间停顿的风险。
测试工具调整:JMeter共享模式的影响
为避免外部依赖响应波动对GC测试的干扰,本次测试将JMeter共享模式设置为“当前线程”,使各线程调用参数一致,利用外部缓存预热,减少响应时间波动。作者指出,若设置为“所有线程”,每次调用参数不同,虽更接近真实场景,但会引入额外变量,不利于聚焦GC表现。
Q&A
J21-G1的性能表现如何?
J21-G1的极限峰值最高,能够支撑1100+ QPS,表现稳定,几乎没有出现Full GC。
J21-Gen-ZGC在不同QPS下的表现如何?
在900 QPS以下,J21-Gen-ZGC响应更快,但超过1000 QPS时,其稳定性不如J21-G1。
测试中使用了什么样的流量策略?
测试采用递增流量策略,各个分组几乎同时开始执行测试任务,调用量从低到高逐步增加。
J21-G1和J21-Gen-ZGC的CPU使用率有什么区别?
J21-G1的CPU使用率稳定,随QPS提升而上升,而J21-Gen-ZGC早期CPU使用率接近100%。
在极限情况下,哪个GC表现更值得信赖?
在极限情况下,J21-Gen-ZGC的表现更值得信赖,超越了J17-ZGC。
测试结果显示了哪些关键数据?
测试结果显示J21-G1的极限峰值为1100+ QPS,J21-Gen-ZGC在900 QPS以下响应更快,且J21-G1几乎没有Full GC。