【JVM】记一次JVM调优经历

【本文图片别放大,放大就模糊,我电脑本地没事,传上去就这样。哎!抱歉了!】 

事出起因,通过grafana查看Jvm运行情况。

发现每分钟GC次数频繁,而且主要是ParNew GC,通过查资料,发现该垃圾收集器对应JVM 堆的新生代。

通过Arthas查一下内存分配情况。

可以看到堆内存一共分配了4G。

然后新生代(eden + survivor)和老年代(cms)分配比例接近:1 : 3

多执行几次 memory 命令试试,果然发现了重大问题。

eden 使用率频繁从20%多到90%多,再到20%多,再到90%,这无疑印证了再频繁进行ParNew GC

     很明显是由于新生代内存空间不足,然而又不断在新生代分配对象导致的。

    看了,一下pod 的内存limit上限可是8g啊,怎么Jvm堆内存才分配4G。

    -Xms1024m 

    -Xmx4096m  (堆最大内存)

    -Xmn512m (新生代大小)

    -Xss2048K

    -XX:MetaspaceSize=128m

    -XX:MaxMetaspaceSize=512m

   这是妥妥的浪费啊,推测可能是历史原因,最开始每个Pod可能就4g内存,后来开发人员发现内存不足,便申请提升内存至8g,可是后来忘了修改jvm的堆内存大小,相当于白申请了~

   给它改一下吧。

   -Xms1024m

   -Xmx6144m (堆分配6g)

   -Xmn2048m (新生代2g,也就是老年代 4g,比例为:1:2)

   -Xss512K

   -XX:MetaspaceSize=128m

    大概画了一下JVM内存分配图。

运行一段时间了,看看效果,emm....,果然降低不少啊!

思考:为什么我们的开发人员一直都没有去关注过这件事呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值