2011-12-22 1 views
2

После некоторого периода времени (иногда минут, иногда дней) мое приложение начинает потреблять 100% процессор. Как я вижу из VisualVM, это всегда происходит в классе org.elasticsearch.common.netty.channel.socket.nio.NioClientSocketPipelineSink.ElasticSearch потребляет 100% CPU

А также, как я вижу из бревен, он бросает следующее исключение:

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) 

Btw, я не уверен, где проблема.

Это вопрос ElasticSearch? Или встроенный Netty? Или моя конфигурация сервера/приложения?

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


Update

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

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

+0

Посмотрите там аналогичная нить в списке рассылки, https://groups.google.com/group/elasticsearch/browse_thread/thread/b5a86523bfd616b7/9609d236626feef0?lnk=gst&q=100%25#9609d236626feef0 – Andy

+0

Ах да. Я вижу такие публикации в Интернете, но все они для старой версии Netty, но ElasticSearch 0.18.5 использует более новую Netty. Итак, может быть, есть что-то еще –

ответ

1

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

+0

. В приведенной выше версии утилиты elasticsearch (0.18.5) уже используется новая версия нетто 3.2.7. – kimchy

 Смежные вопросы

  • Нет связанных вопросов^_^