不要急,总有办法的

ES有时候old GC的时间会非常长,请问可能是因为什么原因?

Elasticsearch | 作者 derobukal | 发布于2018年09月01日 | 阅读数:5774

GC使用的是CMS,基本上所有的GC都能保证在1s以内,但是偶尔的会出现超长时间的GC的情况,但是经过观察发生长时间的GC的时候并没有大量的数据写入或查询。
 
贴一下长时间GC的日志:
[2018-08-28 09:17:48,393][INFO ][monitor.jvm              ] [es241] [gc][old][2904280][15] duration [6.8s], collections [1]/[7.4s], total [6.8s]/[19.4s], memory [15.6gb]->[1.6gb]/[21.6gb], all_pools {[young] [1.4gb]->[47.6mb]/[1.4gb]}{[survivor] [172.5mb]->[0b]/[191.3mb]}{[old] [14gb]->[1.6gb]/[19.9gb]}

经过观察,平时出现15g老年代堆内存GC到1个多G的时候也不过是200多毫秒,但是此次GC事件则令人意外的长,耗时6.8s。
 
目前怀疑原因可能是GC时CPU利用率较高导致GC速度变慢,不知道还有没有可能会是别的原因,还请大神指教。
已邀请:

JackGe

赞同来自: tianhuang101

那你在marvel上观察下2018-08-28 09:17:48,393时间段节点的内存和负载情况,来验证你怀疑可能是GC时CPU利用率较高导致GC速度变慢。
我曾经遇到的情况是es运行在docker环境中,jdk8未修复获取docker环境下获取cpu核数,而是获取到物理机cpu核数,jvm垃圾回收线程个数不合理导致gc耗时变长。

medcl - 今晚打老虎。

赞同来自:

GC监控的锯齿图有么?

zqc0512 - andy zhou

赞同来自:

try C1G1

code4j - coder github: https://github.com/rpgmakervx

赞同来自:

我用的G1, 也遇到这个问题了,一次gc30+s,节点直接被踢出去了。有解决的嘛

要回复问题请先登录注册