Эластичный поиск с использованием большого количества памяти, несмотря на малый размер кучи

Мы настроили параметры JVM эластичного поиска /etc/elasticsearch/jvm.options для использования фиксированного размера кучи -Xms512m -Xmx512m

Это может быть подтверждено как работающее при проверке процесса эластичного поиска:

enter image description here

Однако вы заметите, что он по-прежнему использует 835 МБ памяти.

Если мы проверим фактический размер используемой кучи с ES:

root: curl -sS -XGET "localhost:9200/_cat/nodes?h=heap*&v"
heap.current heap.percent heap.max
     276.1mb           55  494.9mb

На самом деле используется только 276 МБ кучи - так где же именно используются остальные 559 МБ? Мы обеспокоены тем, что это вызывает много проблем с подкачкой / разбиением на страницы, особенно в столбце VIRT имеет размер 4 ГБ (но мне сказали не беспокоиться об этом столбце, хотя мне кажется, что это слишком большое число)

Мы также отключили bled swapping для Elastic Search с опцией mlockall, что можно подтвердить с помощью:

root:~# curl -s localhost:9200/_nodes?pretty|grep mlock
     "mlockall" : true

Однако, похоже, это ВСЕ ЕЩЕ подкачка:

for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less
java 128592 kB

Итак, мои вопросы:

  1. Что мы можем сделать, чтобы уменьшить размер памяти, потребляемой Elastic Выполните поиск, чтобы убедиться, что он зафиксирован на уровне 512 МБ или как можно ближе к этому значению?
  2. Убедитесь, что подкачка отключена
  3. Уменьшите размер столбца VIRT (или это действительно не стоит беспокоиться?)
0
задан 13 January 2019 в 18:16
2 ответа
-Xmx512m

Этот параметр ограничивает только объем оперативной памяти, которую использует приложение Elasticsearch (внутри вашей JVM), но не ограничивает объем оперативной памяти, необходимой JVM для накладных расходов. То же самое и с mlockall

. Вот почему Elastic предлагает использовать 50% доступной оперативной памяти (после ОС и другого запущенного программного обеспечения) для вашего приложения Elasticsearch с -Xmx.

Хорошая статья об этом: Почему мой Процесс Java потребляет больше памяти, чем Xmx

0
ответ дан 5 December 2019 в 04:31

Я бы порекомендовал вам проверить документацию относительно размера кучи

В любом случае, я считаю, что абсолютно не рекомендуется выделять менее 1 ГБ памяти для службы elasticsearch на производственном сервере.

0
ответ дан 5 December 2019 в 04:31

Теги

Похожие вопросы