Elasticsearch OutOfMemoryError Явное пространство Java
Я запускаю 8 ядер, 32g RAM elasticsearch node с 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"
}
}
}
}
Ответы
Ответ 1
Я думаю, что обнаружил ошибку. Я использовал "службу" для запуска 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