2015-01-30 3 views
3

Мы только что перезапустили наш сервер, но теперь каждые несколько часов наш кластер перестает отвечать на вызовы API. Вместо этого, когда мы делаем вызов, я получаю ответ, как это:ElasticSearch Throwing «OutOfMemoryError [не удалось создать новый собственный поток]»

curl -XGET 'http://localhost:9200/_cluster/health?pretty' 
{ 
    "error" : "OutOfMemoryError[unable to create new native thread]", 
    "status" : 500 
} 

я заметил, что мы все еще можем нормально индексировать данные, по-видимому, но не могу найти или вызвать какую-либо функцию API. Кажется, это происходит каждые несколько часов, и в самое последнее время в журналах журналов не было никаких журналов.

Наш кластер состоит из 8 узлов на 5 серверах (3 сервера выполняют 2 процесса ElasticSearch, 2 запуска 1), работает RHEL6u5. Мы запускаем ElasticSearch1.3.4.

ответ

2

Это может быть связано с тем, что ОС не позволяет создавать больше потоков. Увеличение количества потоков на процесс может решить проблему. Установите значение ulimit -u выше.

Несмотря на то, что вышесказанное хорошо, даже лучшее решение - это configure ElasticSearch, чтобы использовать пул потоков. Это лучшее решение, поскольку создание и разрушение потоков дороги. На самом деле, некоторые (или все?) JVM не могут очищать завершенные потоки, кроме как во время полного GC.

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