ElasticSearch загружает ЦП на 100%

Через некоторое время (иногда минуты, иногда дни) мое приложение начинает потреблять 100% ресурсов ЦП. Как я вижу из 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? Или встроенная Нетти? Или конфигурация моего сервера/приложения?

Я использую Ubuntu 64 11.10, Sun Java 1.6.0_26-b03 и Elastic Search 0.18.5.


Обновить

Кажется, это потому, что я пытался открывать и закрывать соединение для каждого запроса к ElasticSearch. И это была, я думаю, какая-то проблема параллелизма.

Исправлено открытием соединения с Elastic Search только один раз при запуске.


person Igor Artamonov    schedule 22.12.2011    source источник
comment
Посмотрите, в списке рассылки есть похожая тема, groups.google.com/group/elasticsearch/browse_thread/thread/   -  person Andy    schedule 22.12.2011
comment
Ах, да. Я вижу подобные сообщения в Интернете, но все они для старой версии Netty, но ElasticSearch 0.18.5 использует более новую Netty. Так что, может быть, что-то еще   -  person Igor Artamonov    schedule 22.12.2011


Ответы (1)


Можете ли вы проверить последнюю версию netty (3.2.7.Final) и посмотреть, исправит ли она это? Я думаю, что мы исправили ошибку, которая могла вызвать бесконечный цикл в селекторе и, таким образом, потреблять 100% ресурсов процессора.

person Norman Maurer    schedule 22.12.2011
comment
Упомянутая версия elasticsearch (0.18.5) уже использует новую версию netty 3.2.7... . - person kimchy; 23.12.2011