公司内部OOM故障复盘分享有哪些关键点?
- 内容介绍
- 文章标签
- 相关推荐
本文共计977个文字,预计阅读时间需要4分钟。
公司内部一次关于OOM告警的故障分享。总结现象,分析原因,提出了具体解决方案。最近作者有点忙,这次OOM事故发生过去两周前,记得那天作者正带着家人在外地玩,中午时分接到电话...
公司内部一次关于oom告警故障复盘分享报告。总结现象,分析原因,给出了具体解决方案...最近笔者有点忙,这次OOM事故发生过去两周前,记得笔者那天正带着家人在外地玩,正中午跟友人吃饭的时候,钉钉连续告警爆表,接着就是钉钉电话(显示广东抬头)一看就知道BBQ了,又一次故障发生了,今天把那次故障复盘一下,做个总结,也给小伙伴分享一下 我是怎么从接到告警开始,怎么一步一步分析故障,然后定位到问题,最后完美解决,成功上线解决问题的。
上述告警内容,由于笔者所在服务是用CMS垃圾回收器,当其GC次数太频繁,达到公司监控平台设置的阈值时,就会通过钉钉通知告知开发者,发送到对应的控制台上。这个异常先从字面意义上来说倒也比较明显,如果老年代里的对象太多,无法提供空间容纳年轻代传递过来的对象的时候,就会触发FULL GC。
这里我们先简单分析一下,对象什么情况下会进入老年代,以及老年代又是在什么情况下会触发FULL GC?只有先知道了原理性东西,你才能带着思路去分析,真实线上场景属于对应哪种情况
首先科普一下对象什么情况下会进入老年代?
1)躲过15次GC之后进入老年代
public class Kafka{ //只要Kafka这个类存在,r这个静态变量就会一直存在 private static ReplicManager r=new ReplicManager(); } 像上面这块代码,成员变量是GCROOT引用,所以一直不会回收不掉;这个对象每次从Eden躲过一次到Survivor区域中,它的年龄就增长1岁,当年龄增加到15岁时候,就会转移到老年代里。本文共计977个文字,预计阅读时间需要4分钟。
公司内部一次关于OOM告警的故障分享。总结现象,分析原因,提出了具体解决方案。最近作者有点忙,这次OOM事故发生过去两周前,记得那天作者正带着家人在外地玩,中午时分接到电话...
公司内部一次关于oom告警故障复盘分享报告。总结现象,分析原因,给出了具体解决方案...最近笔者有点忙,这次OOM事故发生过去两周前,记得笔者那天正带着家人在外地玩,正中午跟友人吃饭的时候,钉钉连续告警爆表,接着就是钉钉电话(显示广东抬头)一看就知道BBQ了,又一次故障发生了,今天把那次故障复盘一下,做个总结,也给小伙伴分享一下 我是怎么从接到告警开始,怎么一步一步分析故障,然后定位到问题,最后完美解决,成功上线解决问题的。
上述告警内容,由于笔者所在服务是用CMS垃圾回收器,当其GC次数太频繁,达到公司监控平台设置的阈值时,就会通过钉钉通知告知开发者,发送到对应的控制台上。这个异常先从字面意义上来说倒也比较明显,如果老年代里的对象太多,无法提供空间容纳年轻代传递过来的对象的时候,就会触发FULL GC。
这里我们先简单分析一下,对象什么情况下会进入老年代,以及老年代又是在什么情况下会触发FULL GC?只有先知道了原理性东西,你才能带着思路去分析,真实线上场景属于对应哪种情况
首先科普一下对象什么情况下会进入老年代?
1)躲过15次GC之后进入老年代
public class Kafka{ //只要Kafka这个类存在,r这个静态变量就会一直存在 private static ReplicManager r=new ReplicManager(); } 像上面这块代码,成员变量是GCROOT引用,所以一直不会回收不掉;这个对象每次从Eden躲过一次到Survivor区域中,它的年龄就增长1岁,当年龄增加到15岁时候,就会转移到老年代里。
