无论才能、知识多么卓著,如果缺乏热情,则无异纸上画饼充饥,无补于事。

长时间GC能够发现什么问题?

Elasticsearch | 作者 yang009ww | 发布于2018年06月07日 | 阅读数:3850

版本5.5.3
经过分析,当天gc在16-18秒时长的出现过1次,18-20秒时长的出现过1次,其它都是2秒内
1. 18秒gc对于的gc日志,请看图:

g1.png

 
2. 对应节点的dump, 请看图:
visual VM:
g2.png

Memory Analysis Tools:

g3.png

 
3. 对应时间的监控,请看图:

g4.jpg

 
4. es日志中出现Error: 
 ByteBuf.release() was not called before it's garbage-collected. Enable advanced leak repo
rting to find out where the leak occurred. To enable advanced leak reporting, specify the JVM option '-Dio.netty.leakDetection.level=advanced' or call ResourceLeakDetector.setLevel() See  http://netty.io/wiki/reference ... .html for more information 
 
通过监控,个人感觉好像是频繁GC引起的问题,日志中提示的是Netty内存泄漏。。。但是分析dump没看出问题在哪里。。。
请大神帮忙看看,谢谢!(附件gc.rar为gc日志源文件,因dump太大,就不上传了)
 
已邀请:

kennywu76 - Wood

赞同来自:

看起来netty的ByteBuf产生泄漏了。 Github上有一个类似的问题, https://github.com/elastic/ela ... 27222 ,该issue描述的现象是客户端发送了非法的http header,ES跳到异常处理代码的时候,少释放了一次对ByteBuf的引用,从而产生泄漏。
 
你可以看看异常日志里,泄漏警告消息周围是否还有其他的异常消息,有可能是同一类问题。  问题修复版本是v5.6.5。

yang009ww

赞同来自:

Netty内存泄漏的es日志,请看图:

1.jpg

 

要回复问题请先登录注册