ElasticSearch消耗100%的CPU

时间:2011-12-22 13:09:24

标签: java netty elasticsearch

经过一段时间(有时几分钟,有时几天),我的应用程序开始消耗100%的CPU。正如我从VisualVM看到的那样,它始终发生在org.elasticsearch.common.netty.channel.socket.nio.NioClientSocketPipelineSink类。

而且,正如我从日志中看到的那样,它抛出以下异常:

NioClientSocketPipelineSink:internalWarn:105 - Unexpected exception in the selector loop.
java.nio.channels.CancelledKeyException
    at sun.nio.ch.SelectionKeyImpl.ensureValid(SelectionKeyImpl.java:55)
    at sun.nio.ch.SelectionKeyImpl.readyOps(SelectionKeyImpl.java:69)
    at java.nio.channels.SelectionKey.isConnectable(SelectionKey.java:318)
    at org.elasticsearch.common.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.processSelectedKeys(NioClientSocketPipelineSink.java:369)
    at org.elasticsearch.common.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.run(NioClientSocketPipelineSink.java:292)
    at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
    at org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
是的,我不确定问题出在哪里。

是ElasticSearch的问题吗?还是嵌入式Netty?还是我的服务器/应用程序配置?

我正在使用Ubuntu 64 11.10,Sun Java 1.6.0_26-b03和Elastic Search 0.18.5


更新

似乎是因为我试图为ElasticSearch的每个请求打开和关闭连接。我想,它是某种并发问题。

通过在启动时打开一次与弹性搜索的连接来修复。

1 个答案:

答案 0 :(得分:1)

您可以查看最新的netty版本(3.2.7.Final)并查看是否可以修复它?我认为我们修复了一个错误,它可能导致选择器中的无限循环,因此消耗100%的CPU。