Elasticsearch OutOfMemoryError Пространство кучи Java

Я использую 8-ядерный узел elasticsearch объемом 32 ГБ с 5 осколками, 400 миллионами (маленькими) документами.

Все работает отлично, пока я не запустил агг-поиск, а затем осколки начинают давать сбой:

java.lang.OutOfMemoryError: Java heap space

Я изменил размер кучи на: export ES_HEAP_SIZE=16g ( также ES_MAX_MEM и ES_MIN_MEM к тому же)

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

bootstrap.mlockall: true

и даже (рекомендуется установочной документацией):

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"
      }
    }
  }
}

person B.P    schedule 08.12.2014    source источник
comment
Какая у вас версия? Какой агрегационный запрос вы выполняете? Можно ли с помощью фильтра ограничить количество документов, помещаемых в сводный результат?   -  person Jettro Coenradie    schedule 08.12.2014
comment
Версия: 1.1.1, Сборка: f1585f0, JVM: 1.7.0_72   -  person B.P    schedule 08.12.2014
comment
Запрос агрегирования находится в поле, которое существует в каждом документе. Запрос - это попытка подсчитать уникальные экземпляры содержимого этого поля. Ограничение того, на чем он запускается, исказит результаты. Я не собираюсь часто запускать этот запрос и не буду возражать, если он будет работать медленно. Но когда осколок выходит из строя, я получаю противоречивые результаты.   -  person B.P    schedule 08.12.2014
comment
Вы смотрели на это? elasticsearch.org/guide/en/elasticsearch/ гид / текущий /   -  person Felipe    schedule 08.12.2014
comment
Взгляните сюда elastic.co/guide/en/ elasticsearch / руководство / текущий /   -  person Bogdan Alexandru Militaru    schedule 01.03.2021


Ответы (2)


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

Пока все работает нормально, и приложение не выдает ошибок.

person B.P    schedule 08.12.2014

Правильный способ обновления размера кучи 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
person Craig    schedule 07.12.2016
comment
Просто примечание для пользователей Windows: jvm.options используется для определения параметров Java, когда установка службы elasticsearch, но после этого любые изменения в jvm.options не будут иметь эффекта, пока вы не воссоздадите службу. - person qbik; 11.01.2017
comment
В Elasticsearch 2.3.3 мне пришлось установить как ES_HEAP_SIZE, так и ES_JAVA_OPTS, чтобы получить любое значение, кроме значения по умолчанию. Это означало, что мне не нужно было использовать config/jvm.options - person eebbesen; 13.02.2020