Объем виртуальной памяти 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