elasticsearch elasticsearch内存不足错误,elasticsearch,out-of-memory,elasticsearch,Out Of Memory" /> elasticsearch elasticsearch内存不足错误,elasticsearch,out-of-memory,elasticsearch,Out Of Memory" />

elasticsearch elasticsearch内存不足错误

elasticsearch elasticsearch内存不足错误,elasticsearch,out-of-memory,elasticsearch,Out Of Memory,我们正在使用elasticsearch 0.90.0和java版本“1.7.0_25”。 我们通过保存在DB服务器上的可执行jar将数据从oracle DB迁移到Hadoop Caused by: java.lang.OutOfMemoryError: unable to create new native thread at java.lang.Thread.start0(Native Method) at java.lang.Thread.start(Thread.java:

我们正在使用elasticsearch 0.90.0和java版本“1.7.0_25”。 我们通过保存在DB服务器上的可执行jar将数据从oracle DB迁移到Hadoop

Caused by: java.lang.OutOfMemoryError: unable to create new native thread
    at java.lang.Thread.start0(Native Method)
    at java.lang.Thread.start(Thread.java:597)
    at java.util.concurrent.ThreadPoolExecutor.addIfUnderMaximumPoolSize(ThreadPoolExecutor.java:727)
    at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:657)
    at org.elasticsearch.common.netty.util.internal.DeadLockProofWorker.start(DeadLockProofWorker.java:38)
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.openSelector(AbstractNioSelector.java:343)
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.<init>(AbstractNioSelector.java:95)
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.<init>(AbstractNioWorker.java:51)
    at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.<init>(NioWorker.java:45)
    at org.elasticsearch.common.netty.channel.socket.nio.NioWorkerPool.createWorker(NioWorkerPool.java:45)
    at org.elasticsearch.common.netty.channel.socket.nio.NioWorkerPool.createWorker(NioWorkerPool.java:28)
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorkerPool.newWorker(AbstractNioWorkerPool.java:99)
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorkerPool.init(AbstractNioWorkerPool.java:69)
    at org.elasticsearch.common.netty.channel.socket.nio.NioWorkerPool.<init>(NioWorkerPool.java:39)
    at org.elasticsearch.common.netty.channel.socket.nio.NioWorkerPool.<init>(NioWorkerPool.java:33)
    at org.elasticsearch.transport.netty.NettyTransport.doStart(NettyTransport.java:240)
    at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
    at org.elasticsearch.transport.TransportService.doStart(TransportService.java:90)
    at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
    at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.java:179)
    at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.java:119)
原因:java.lang.OutOfMemoryError:无法创建新的本机线程
位于java.lang.Thread.start0(本机方法)
在java.lang.Thread.start(Thread.java:597)处
位于java.util.concurrent.ThreadPoolExecutor.addIfUnderMaximumPoolSize(ThreadPoolExecutor.java:727)
位于java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:657)
在org.elasticsearch.common.netty.util.internal.DeadLockProofWorker.start(DeadLockProofWorker.java:38)
位于org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.openSelector(AbstractNioSelector.java:343)
位于org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.(AbstractNioSelector.java:95)
位于org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker。(AbstractNioWorker.java:51)
位于org.elasticsearch.common.netty.channel.socket.nio.niowerner.(niowerner.java:45)
位于org.elasticsearch.common.netty.channel.socket.nio.niowerpool.createWorker(niowerpool.java:45)
位于org.elasticsearch.common.netty.channel.socket.nio.niowerpool.createWorker(niowerpool.java:28)
在org.elasticsearch.common.netty.channel.socket.nio.AbstractNiowerPool.newWorker(AbstractNiowerPool.java:99)上
位于org.elasticsearch.common.netty.channel.socket.nio.AbstractNiowerPool.init(AbstractNiowerPool.java:69)
请访问org.elasticsearch.common.netty.channel.socket.nio.niowerpool.(niowerpool.java:39)
位于org.elasticsearch.common.netty.channel.socket.nio.niowerpool(niowerpool.java:33)
位于org.elasticsearch.transport.netty.NettyTransport.doStart(NettyTransport.java:240)
位于org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
在org.elasticsearch.transport.TransportService.doStart(TransportService.java:90)上
位于org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
位于org.elasticsearch.client.transport.TransportClient.(TransportClient.java:179)
位于org.elasticsearch.client.transport.TransportClient.(TransportClient.java:119)

namenode/datanode或elasticsearch日志中均未捕获异常。这个错误是在DB服务器上发现的,但我认为它与弹性搜索有关。

我猜您创建的Netty客户端太多了,这反过来会占用您的所有线程。也许可以用注入的服务来包装您的Netty客户端池?参见Helter Skelter对这个答案的评论

你有多少个指数?弹性搜索分配了多少内存?这是最近发生的(假设是因为您运行的是旧版本的ES)。您可能已经越过了需要删除旧索引或增加分配给ES的内存的点。