Elasticsearch: max virtual memory areas vm.max_map_count is too low
Elasticsearch проверяет системные настройки при запуске и отказывается работать, если vm.max_map_count меньше 262144. Это осознанное поведение: при заниженном значении служба работала бы нестабильно.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Значение ядра ниже требуемого
Значение по умолчанию в дистрибутивах меньше требуемого Elasticsearch. Проверка при старте это ловит.
-
Значение задано только до перезагрузки
Команда sysctl без файла настроек действует до перезагрузки. Служба поднимается сейчас и отказывается после ребута.
-
Служба работает в контейнере
Настройка ядра общая для машины, и изнутри контейнера её не изменить. Значение нужно поднимать на хосте.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Текущее значение — первое, что проверяет Elasticsearch.
sysctl vm.max_map_countРезультаты всех проверок при запуске.
sudo tail -40 /var/log/elasticsearch/elasticsearch.log | grep -i bootstrapДругие требования: дескрипторы и блокировка памяти.
systemctl show elasticsearch -p LimitNOFILE -p LimitMEMLOCKРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Значение по умолчанию в дистрибутивах меньше требуемого Elasticsearch. Проверка при старте это ловит.
- Как проверить
-
Посмотрите текущее значение.
sysctl vm.max_map_count
- Как исправить
-
Поднимите значение и закрепите его в файле настроек ядра, иначе после перезагрузки всё вернётся.
echo "vm.max_map_count = 262144" | sudo tee /etc/sysctl.d/99-elasticsearch.conf && sudo sysctl --system
- Почему происходит
- Команда sysctl без файла настроек действует до перезагрузки. Служба поднимается сейчас и отказывается после ребута.
- Как проверить
-
Поищите настройку в файлах.
grep -r max_map_count /etc/sysctl.conf /etc/sysctl.d/ 2>/dev/null
- Как исправить
- Создайте файл в /etc/sysctl.d с нужным значением.
- Почему происходит
- Настройка ядра общая для машины, и изнутри контейнера её не изменить. Значение нужно поднимать на хосте.
- Как проверить
-
Определите окружение.
systemd-detect-virt
- Как исправить
- Поднимите значение на хост-машине: контейнеры используют настройки ядра хоста.
Пример вывода
Проверка при запуске не прошла. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
× elasticsearch.service - Elasticsearch
Active: failed (Result: exit-code) since Mon 2026-09-15 19:02:41 MSK; 3s ago
elasticsearch[4800]: ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
elasticsearch[4800]: bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
Связанные ошибки
- status=1/FAILURE в systemd Код 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.
- Too many open files в журнале службы Служба исчерпала лимит файловых дескрипторов. Как правильно поднять LimitNOFILE и когда дело в утечке.
- Failed with result 'oom-kill' Состояние oom-kill: процесс службы убит из-за нехватки памяти. Как понять, упёрлись в предел службы или в память машины.
- No buffer space available в журнале службы Ошибка 105: нет места в буферах ядра. Разбор для сети и таблиц соседей.
- TCP: out of memory -- consider tuning tcp_mem Ядру не хватает памяти под сетевые буферы: соединения рвутся, служба отвечает с перебоями.
- VFS: file-max limit reached: в системе кончились описатели Общесистемный предел числа открытых файлов исчерпан: службы перестают принимать соединения и открывать файлы.
- kernel: audit: backlog limit exceeded Очередь аудита переполнена: часть событий теряется, система может замедляться.
- nf_conntrack: table full, dropping packet Соединения обрываются под нагрузкой: заполнена таблица отслеживания соединений ядра.
Где встречается чаще всего
Источники
- Документация Elasticsearch: системные настройки
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено на машине со значением по умолчанию 65530.