Сколько виртуальной памяти занимает куча 30,5 ГБ (всего 256 ГБ памяти) для поддержки Elasticsearch?

Предположим, у меня есть машина с 256 ГБ памяти и 12 ТБ SSD. Размер проиндексированного документа составляет 100 ТБ. Я выделяю 30,5 ГБ кучи Elasticsearch. Остальное для Lucene и ОС.

Мой вопрос: сколько виртуальной памяти поддерживает Elasticsearch? Иными словами, сколько проиндексированных документов я могу поместить в виртуальную память для каждой машины?

Спасибо


person lee891031    schedule 12.01.2016    source источник


Ответы (1)


Объем виртуальной памяти ES может использовать определяется значением параметра vm.max_map_count в /etc/sysctl.conf. По умолчанию установлено значение 262144, но вы можете изменить это значение, используя:

sysctl -w vm.max_map_count=262144

Из документации Linux:

Этот файл содержит максимальное количество областей карты памяти, которые может иметь процесс. Области карты памяти используются как побочный эффект вызова malloc, напрямую через mmap и mprotect, а также при загрузке разделяемых библиотек.

В то время как большинству приложений требуется менее тысячи карт, некоторые программы, особенно отладчики malloc, могут потреблять их много, например, до одной или двух карт на выделение.

Значение по умолчанию — 65536.

Таким образом, этот параметр определяет не определенный размер, доступный для ES/Lucene, а количество дискретных областей памяти, которые может использовать данный процесс. Точное количество используемой памяти будет зависеть от размера фрагментов памяти, выделяемых ES/Lucene. По умолчанию Lucene использует

  • 1<<30 = 1 073 741 824 ~= куски по 1 ГБ на 64-битной JRE и
  • 1<<28 = 268 435 456 ~= фрагментов по 256 МБ на 32-разрядной JRE

Итак, если вы посчитаете, значение по умолчанию vm.max_map_count, вероятно, достаточно для вашего случая, если нет, вы можете настроить его и контролировать использование виртуальной памяти.

person Val    schedule 13.01.2016
comment
Когда вы говорите о куске памяти, вы имеете в виду физическую память или виртуальную память? - person lee891031; 13.01.2016