【问题标题】:ElasticSearch consumes 100% CPUElasticSearch 消耗 100% CPU
【发布时间】:2012-01-26 02:53:34
【问题描述】:

一段时间后(有时是几分钟,有时是几天),我的应用开始消耗 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 的每个请求打开和关闭连接。我猜这是某种并发问题。

通过在启动时仅打开一次与 Elastic Search 的连接来修复。

【问题讨论】:

标签: java netty elasticsearch


【解决方案1】:

你能检查一下最新的 netty 版本(3.2.7.Final),看看它是否能修复它?我认为我们修复了一个错误,该错误可能会导致选择器中出现无限循环,从而消耗 100 % cpu。

【讨论】:

  • 提到使用的elasticsearch版本(0.18.5)已经使用了新的3.2.7 netty版本... .
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 2016-10-27
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多