三人行必有我师

java.lang.OutOfMemoryError: Java heap space

Elasticsearch | 作者 kevin000 | 发布于2017年09月11日 | 阅读数:6603

[ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [datacenter22] fatal error in thread [elasticsearch[datacenter22][bulk][T#30]], exiting
java.lang.OutOfMemoryError: Java heap space

[2017-09-11T11:23:00,453][WARN ][o.e.h.n.Netty4HttpServerTransport] [datacenter21] caught exception while handling client http traffic, closing connection [id: 0xea1dc2d3, L:/10.16.65.21:9200 - R:/10.16.65.13:44230]
java.lang.OutOfMemoryError: Java heap space
at io.netty.buffer.UnpooledHeapByteBuf.<init>(UnpooledHeapByteBuf.java:46) ~[?:?]
at io.netty.buffer.UnpooledByteBufAllocator.newHeapBuffer(UnpooledByteBufAllocator.java:59) ~[?:?]
at io.netty.buffer.AbstractByteBufAllocator.heapBuffer(AbstractByteBufAllocator.java:160) ~[?:?]
at io.netty.buffer.AbstractByteBufAllocator.heapBuffer(AbstractByteBufAllocator.java:151) ~[?:?]
at io.netty.buffer.Unpooled.buffer(Unpooled.java:116) ~[?:?]
--
at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-5.0.1.jar:5.0.1]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_102]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_102]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_102]
已邀请:

kennywu76 - Wood

赞同来自: laoyang360

这种OOM一般需要做heap dump分析才能知道确切的原因,bulk size过大是可能的原因之一。  不过原帖里的ES版本是5.0.1,这个版本有一个已知的可能因为netty导致的OOM问题,https://github.com/elastic/ela ... 22360  ,这个问题在5.1.2, 5.2.0和6以后的版本才修复。https://github.com/elastic/ela ... 22452
 
所以其他遇到类似问题的同学,如果使用的是5.x的早期版本,可以通过小版本升级排除掉这个隐患。  这个issue是已知的引起OOM的场景之一,不排除还有其他的可能性存在,比如@yayg2008 提到的可能bulk size过大。

saintlu

赞同来自:

有没有解决啊, 大哥?

erha_erha - 90后程序员

赞同来自:

和你情况一样 解决了吗?
 

yayg2008

赞同来自:

看异常,应该是bulk数据量太大,导致OOM了,尝试减小每次bulk的条数,并增大内存。

要回复问题请先登录注册