jvm之 国际酒店 一次报表 load数据死循环导致的FULLGC
原创
©著作权归作者所有:来自51CTO博客作者wx61121c6618814的原创作品,请联系作者获取转载授权,否则将追究法律责任
从目前这几天的运行情况看,每天晚上0点到3点,应该是你们那边有大数据任务处理,在这个时间段,SOA会频繁报ZK断开重联的告警,见下图。
类似的问题,在CRM系统上也有出现过,我们dump内存,分析后,结论如下,看是否你们有类似的情况,供参考:
代码中使用了大量循环,在循环体中产生了众多对象,这些对象基本在本次循环结束后就成为垃圾对象,但因为对象过大过多,可能会逃逸到old区。
这 样,多次循环下来,old区被占满,于是full gc开始工作,在full gc过程中,jvm会暂停所有线程,且这个过程会比较久。当这个暂时时间超过ZK的会话超时时间(目前我们的SOA中设置的是10S),ZK重新连接上去 后,发现会话过期,需要重新建立连接,此时我们就会下发告警短信和邮件。
目前这个情况,一般不会对业务方和SOA使用造成影响。从性能的角度考虑,建议优化一下代码,避免如此频繁的full gc。
Face your past without regret. Handle your present with confidence.Prepare for future without fear. keep the faith and drop the fear.
面对过去无怨无悔,把握现在充满信心,备战未来无所畏惧。保持信念,克服恐惧!一点一滴的积累,一点一滴的沉淀,学技术需要不断的积淀!
上一篇:一个故事讲清楚NIO
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
python 判断for循环最后一次
本文简要介绍了Python 判断for循环最后一次的6种方法。
迭代 迭代器 python -
记一次JVM堆外内存泄漏问题
一次由JVM堆外内存泄漏引发的POD重启问题的解决之路。
JVM 内存泄漏 堆外内存 POD重启 -
GetLocalTime()导致的死循环
事情是这样的
GetLocalTime 时间 超时 死循环 VC -
一次 JVM FullGC 的排查过程及解决方案!
又是JVM FullGC。。。
加载 java 软引用 垃圾回收器 动态生成 -
记一次JVM FullGC引发严重线上事故的定位、分析、解决过程!
这篇文章给大家聊一次线上生产系统事故的解决经历,其背后代表的是线上生产系统的JVM FullGC可能引发的严重故障。
数据 分布式系统 while循环 java 技术讨论 -
循环执行一次 java 循环执行一次
【JS-task4】 return的用法是什么?若用在for循环中,还会执行下一次循环吗? &nb
循环执行一次 java for循环 跳出循环 返回函数