JVM频繁Full GC导致服务不可用定位过程

在微服务试点项目中,服务频繁出现Full GC导致长时间卡死,即使增加堆内存问题依旧。通过Jstat监控发现并非堆内存不足,而是MetaSpace满。分析GC原因确认为MetaSpace空间耗尽,与Groovy有关。进一步排查发现ShardingJDBC 3.0.0.M1版本存在内存泄漏问题,升级到M2版本解决问题,提醒生产环境应避免使用不稳定版本。
摘要由CSDN通过智能技术生成

背景:

公司推行微服务策略,我负责的XX模块相对于其他业务来讲相对独立,所以作为微服务推行的试点。于是

  • 分析业务边界
  • 做相关的架构升级
    • 从Spring3.X升级到Spring5.X(引入了SpringBoot2.0)
    • 从JDK7升级到JDK8(老年代被MetaSpace取代)
    • ShardingJDBC从1.4版本升级到3.00.M1版本

问题描述:

重构系统上线后,发现运行一段时间后,系统会出现频繁的Full GC,频率几乎1秒一次,导致服务长时间卡死(10+mins到30+mins不等),但是卡死一段时间后会恢复,再运行一段时间,服务会被Linux内核kill了。

JVM启动参数配置:

java -Dspring.profiles.active=prod -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseParallelGC -XX:+UseParallelOldGC -verbose:gc -Xloggc:/mnt/gc.log -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCDateStamps -XX:+HeapDumpOnOutOfMemo
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值