2014-12-08 5 views
18

Я запускаю 8 ядер, 32g RAM elasticsearch узел с 5 осколками, 400 миллионов (маленьких) документов.Elasticsearch OutOfMemoryError Java куча пространства

Все прекрасно работает, пока я не запустить поиск AGG, то осколки начинают неудачу с:

java.lang.OutOfMemoryError: Java heap space 

У меня есть changed heap size с: export ES_HEAP_SIZE=16g (также ES_MAX_MEM и ES_MIN_MEM в то же самое)

также изменил yml файл для поиска по текстам:

и даже (рекомендовано установить документы):

sudo sysctl -w vm.max_map_count=262144 

службы перезагрузки и до сих пор нет никакого влияния, до сих пор java.lang.OutOfMemoryError: Java heap space

Любые другие предложения? кроме как не запускать агг-запросы?

запрос:

https://localhost:9200/my_index_name/_search?search_type=count 
{ 
    "aggs": { 
    "distinct_hostname": { 
     "cardinality": { 
     "field": "hostname" 
     } 
    } 
    } 
} 
+0

В какой версии вы работаете? Какой запрос агрегирования вы используете? Возможно ли ограничить количество документов, которые будут помещены в совокупный результат с помощью фильтра? –

+0

Версия: 1.1.1, Build: f1585f0, JVM: 1.7.0_72 –

+0

Запрос агрегации находится в поле, которое существует в каждом документе. Запрос - это попытка подсчета уникальных экземпляров содержимого этого поля. Ограничение того, на что оно выполняется, исказило бы результаты. Я не ожидаю часто выполнять этот запрос и не буду возражать, если он работает медленно. Но когда осколок терпит неудачу, я получаю несогласованные результаты. –

ответ

19

Я думаю, что я обнаружил ошибку. Я использовал «службу» для запуска elasticsearch, и поэтому мои переменные среды были разделены. Мне пришлось обновить файл /etc/default/elasticsearch с помощью соответствующих переменных env (в частности, ES_HEAP_SIZE=16g).

Пока это работает хорошо, и приложение не является ошибкой.

2

Правильный способ обновления размера кучи Java для Elasticsearch 5 не равен EXPORT _JAVA_OPTIONS или EXPORT ES_HEAP_SIZE или с использованием параметров командной строки. Насколько я могу судить, все они переопределены конфигурационным файлом в каталоге установки Elasticsearch, config/jvm.options. Чтобы изменить эти параметры, вам необходимо отредактировать эти строки в этом файле:

# Xms represents the initial size of total heap space 
# Xmx represents the maximum size of total heap space 

-Xms2g 
-Xmx2g 
+2

Просто примечание для пользователей Windows: 'jvm.options' используется для определения параметров Java, когда [установка elasticsearch service] (https://www.elastic.co/guide/en/elasticsearch/reference/master/windows.html#windows-service), но после этого любое изменение в 'jvm.options' не будет иметь эффекта до тех пор, пока вы не воссоздаете обслуживание. – qbik

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