应用GC长时间停顿分析

早上被报警叫醒,使用gceasy.io分析了服务器的gc日志,报告见:2017-05-28 gc.log报告

这份报告里明确得指出了应用的问题,即在2017.2.28 07:09左右发生了长时间的GC停顿,入下图所示:


gc报告问题
  1. 点击进入reduce long GC pause,这篇文章列举了几个可能引起长时间GC停顿的原因:
  • 高速的对象创建速率,报告显示我的应用没问题
  • Heap区域,年轻代较小;jdk 1.8只配置了Xmx和Xms相同大小,2048,没有指定-Xmn或-XX:NewRatio,可能有影响;
  • GC算法选择问题,我使用G1回收器:G1回收器适合高并发场景,应该没问题
  • Process Swapping,进程内存置换
  • 较少的GC线程
  • 后台IO阻塞,根据系统监控发现在同一时间IO延时、占用CPU都飙高,怀疑是这个问题。
  1. 点击进入fix this problem,这篇文章首先介绍了user-time、system-time和real-time的区别,由于多线程进行GC过程,因此在正常情况下,real-time应该小于user-time + system-time(例如:如果user-time + system-time为2秒,而有5个线程在执行GC算法,那么real-time应该为400毫秒)。但是在一些特定场景下会出现real-time大于user-time + system-time之和,如果在GC日志中出现多个这样的情况,原因可能是:IO飙高;CPU资源耗尽。

综上分析,可能是JVM参数或io问题引起的GC长时间停顿,IO问题可能性更高。

全部评论

相关推荐

06-26 17:24
已编辑
宁波大学 Java
迷失西雅图:别给,纯kpi,别问我为什么知道
点赞 评论 收藏
分享
Java抽象带篮子:简历怎么写可以看看我发的帖子,你的第一个是实习经历吗?那怎么写的是你的第一个练手项目呢?简历写的怎么样直接投小厂面试一下就知道了
没有实习经历,还有机会进...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务