JDK从8升级到11,使用 G1 GC,HBase性能下降20%。JDK 到底干了什么

JDK 从 8 升级到 11 导致 HBase 性能下降 20%,问题聚焦在 G1 GC。分析发现 JDK 11 的 GC 次数更多,耗时更长,尤其是 Young GC。通过 JFR 分析,确认 Young GC 存在问题,尤其是 G1ParEvacuateFollowersClosure 和 G1RemSet::scan_rem_set 函数。调整参数和对比火焰图未找到根本原因,但确定 PLAB 设置错误是性能下降的触发点,修复后问题得到解决。
摘要由CSDN通过智能技术生成

JDK 8中 GC 日志片段:

JDK从8升级到11,使用 G1 GC,HBase性能下降20%。JDK 到底干了什么

我们对整个日志做了统计,有以下发现:

并发标记时机不同,混合回收的时机也不同;

单次 GC 中对象复制的耗时不同,JDK 11 明显更长;

总体 GC 次数 JDK 11 得更多,包括了并发标记的停顿次数;

总体 GC 的耗时 JDK 11 更多。

JDK从8升级到11,使用 G1 GC,HBase性能下降20%。JDK 到底干了什么

针对 Young GC 的性能劣化,我们重点关注测试了和 Young GC 相关的参数,例如:调整

UseDynamicNumberOfGCThreads、G1UseAdaptiveIHOP 、GCTimeRatio 均没有效果。

下面我们尝试使用不同的工具来进一步定位到底哪里出了问题。

3.3JFR分析-确认日志分析结果

=================

毕昇 JDK 11和毕昇 JDK 8 都引入了 JFR,JFR 作为 JVM 中问题定位的新贵,我们也在该案例进行了尝试,关于JFR的原理和使用,参考本系列的技术文章:Java Flight Recorder - 事件机制详解。

3.3.1JDK 11总体信息

===============

JDK从8升级到11,使用 G1 GC,HBase性能下降20%。JDK 到底干了什么

JDK 8 中通过 JFR 收集信息。

3.3.2JDK 8总体信息

==============

JDK从8升级到11,使用 G1 GC,HBase性能下降20%。JDK 到底干了什么

JFR 的结论和我们前面分析的结论一致,JDK 11 中中断比例明显高于 JDK 8。

3.3.3JDK 11中垃圾回收发生的情况

=====================

JDK从8升级到11,使用 G1 GC,HBase性能下降20%。JDK 到底干了什么

3.3.4JDK 8中垃圾回收发生的情况

====================

  • 22
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值