Elasticsearch OutOfMemoryError Java heap пространство

Работя с 8 ядра, 32 g RAM elasticsearch възел с 5 сегмента, 400 милиона (малки) документа.

Всичко работи чудесно, докато не пусна agg търсене, след което фрагментите започват да се провалят с:

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

Някакви други предложения? освен да не изпълнявате agg заявки?

заявката е:

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/guide/current/   -  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