Apache Error AH00690: no slotmem from mod_heartmonitor — Решение
При использовании модулей балансировки нагрузки или кластеризации в error.log веб-сервера Apache регулярно фиксируются предупреждения уровня [error] или [warn]: [lbmethod_heartbeat:notice] [pid 1234:tid 5678] AH00690: no slotmem from mod_heartmonitor.
| Модуль Apache | Назначение | Причина сбоя |
|---|---|---|
mod_lbmethod_heartbeat | Алгоритм балансировки на основе heartbeat-метрик нод | Пытается прочитать shared memory, которая не создана |
mod_heartmonitor | Служба сбора heartbeat сигналов от бэкендов | Модуль не включен или отключена разделяемая память |
mod_slotmem_shm | Драйвер разделяемой памяти на базе SHM (Shared Memory) | Отсутствует в цепочке загрузки модулей балансировщика |
- Балансировщик нагрузки не может распределять трафик по алгоритму Heartbeat, переходя на базовый round-robin или сбрасывая запросы.
- Журнал ошибок быстро разрастается однотипными сервисными записями.
- Если вы НЕ используете сложную кластерную балансировку через Heartbeat (самый частый случай), отключите неиспользуемый модуль
lbmethod_heartbeat:# В Debian/Ubuntu: sudo a2dismod lbmethod_heartbeat sudo systemctl restart apache2 # В RHEL/CentOS (закомментируйте строку в /etc/httpd/conf.modules.d/00-proxy.conf): # LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so - Если вам действительно требуется Heartbeat балансировка, включите обязательный модуль разделяемой памяти
mod_slotmem_shmи мониторmod_heartmonitor:# Debian/Ubuntu: sudo a2enmod slotmem_shm heartmonitor lbmethod_heartbeat sudo systemctl restart apache2 - Настройте директиву пути к данным heartbeat в
httpd.conf:<IfModule mod_heartmonitor.c> HeartbeatStorage /var/run/apache2/heartbeat </IfModule> - Проверьте права доступа процесса Apache к каталогу разделяемой памяти
/var/run/apache2/или/run/httpd/. - Протестируйте и перезагрузите конфигурацию:
sudo apache2ctl configtest && sudo systemctl restart apache2.
mod_lbmethod_byrequests (балансировка по числу запросов) или mod_lbmethod_bytraffic вместо устаревшего Heartbeat.Частые вопросы (FAQ)
Что такое Slotmem в Apache?
Slotmem (модуль mod_slotmem_shm) — это механизм предоставления разделяемой памяти на основе слотов (SHM), позволяющий нескольким процессам и воркерам Apache мгновенно обмениваться состоянием сессий и балансировщика.
Опасна ли ошибка AH00690 для обычных сайтов?
Нет, для сайтов без использования балансировщика нагрузки Heartbeat эта ошибка абсолютно безвредна, но свидетельствует о загрузке лишнего неиспользуемого модуля.
Какие альтернативные методы балансировки есть в Apache?
mod_lbmethod_byrequests (по умолчанию), mod_lbmethod_bytraffic (по объему байт), mod_lbmethod_bybusyness (по числу активных соединений).
Как проверить список всех загруженных модулей балансировщика?
Выполните команду apache2ctl -M | grep lbmethod.