一次JVM GC长暂停的排查过程

现象

通过CAT埋点,发现在35~36分钟时候,出现JVM的GC耗时异常

通过跳板机登录机器,找到GC日志进行查看,如下图

在显示的最后一行中,我们看到其中user=0,sys=0,real=4.31s,表示JVM经历了长达4s多的STW,也即在这段时间内,该机器是无法对外提供服务的,请求到达该机器,最终只能超时返回。

排查

根据经验,这种 real > user + sys 的情况,大概率是内存的swap和密集型的IO造成的,可以顺着这个思路进行排查,这时候就突显了系统监控的重要性了,通过查看IO监控

我们可以发现,在对应的时间上确实存在大量的IO操作。

为什么频繁IO会引起长时间GC

在发生GC时,需要把相关数据写入GC日志,在写入期间,因为write()系统调用导致了暂停。这种日志的写操作,即使在异步、缓存IO或非阻塞IO模式下,还是有可能因为系统机制(比如页面缓存的回写),导致长时间的阻塞。

如何减轻因为IO造成的影响?

可以将Java日志文件移动到一个单独的或高性能的磁盘驱动器(例如SSD, tmpfs)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 2018.02.21 编号28 日精进629天 今日感悟: 1重复做的事会出错,就是因为对此事交给的不够! 2看一...
    宇宙之爱黄昊贵阅读 1,733评论 0 0
  • 我元旦居然居然忘记去参加一个朋友的婚礼!!!果然是一孕傻三年啊~没办法,又要工作又要陪娃,两手抓两手都要硬...
    咖啡猫队长阅读 3,229评论 0 6
  • ‘’传说妖魔总在白昼与黑夜交替时大行其道,这一时刻,就是逢魔时刻。‘’ 江歌案一审落定,陈世峰被判有期徒刑20年。...
    天清岛阅读 3,616评论 0 0
  • 有没有这样一种爱情 在爱转身之后 发现自己是这样的念念不忘 黯然惆怅 记得的是在你面前面若桃花的自己 是怎样的顾盼...
    阿夏丽阅读 2,750评论 0 2

友情链接更多精彩内容