频繁youngGC排查

  1. 问题:应用发布后,刚接入流量后young gc频繁导致调用方超时

  2. 行动:

    1. 分析GC日志:发现每次young gc 分配的eden区域大小都不是固定的。有时候默认分配的非常小,导致youngGC频繁

    2. 分析jvm设置:(没有设置-xmn,eden大小采用动态平衡算法)

      1. eden 大小分为动态平衡和固定大小,如果不设置,则默认为动态平衡。

      2. 动态平衡:应用没有设置eden区域大小(从参数上来看没有设置 –xmn ),默认eden 最小值是 总堆栈的5%,最大值为60%

    3. 调大eden最小值大小,让系统在一个稳定区间波动,以至于不那么容易发生young gc。

    4. 调整JVM设置:

      1. -XX:+UnlockExperimentalVMOptions

        -XX:G1NewSizePercent=35

        -XX:G1MaxNewSizePercent=60

      2. G1NewSizePercent 这个不是随便设置的,而是根据hickwall 中eden 的平均使用大小来计算的。

  3. 效果:young gc max 从27次/分钟,降低到11次/分钟,STW time 从560ms,下降到250ms,服务每秒停顿时间变短了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值