Траблшутинг сбоев Apache: нехватка shared memory (модуль mod_slotmem_shm)
- Веб-сервер Apache аварийно падает или не запускается после рестарта.
- В
error_logошибкаAH02611: create: apr_shm_create(/run/apache2/slotmem-shm-...) failed: No space left on device. - В логах появляется
AH01757: No slotmem from mod_heartmonitorилиAH02432: Cannot find existing slotmem. - Память
/dev/shmзабита зависшими сегментами IPC старых процессов Apache.
1. Проверка состояния разделяемой памяти IPC
ipcs -m
ipcs -u
df -h /dev/shm2. Аварийная очистка зависших сегментов памяти
Остановите сервис и удалите осиротевшие сегменты shared memory:
systemctl stop apache2 || systemctl stop httpd
# Удаление файлов сегментов slotmem с диска
rm -f /run/apache2/slotmem-shm-*.shm /run/httpd/slotmem-shm-*.shm
# Принудительная очистка IPC структур для пользователя www-data/apache
ipcs -m | awk '$3 == "www-data" || $3 == "apache" {print $2}' | while read -r id; do
ipcrm -m "$id"
done3. Увеличение лимитов POSIX Shared Memory в sysctl
Создайте /etc/sysctl.d/99-apache-shm.conf:
# Максимальный размер одного сегмента памяти (в байтах, например 2GB)
kernel.shmmax = 2147483648
# Суммарный объем shared memory в страницах по 4KB (например, 4GB = 1048576 страниц)
kernel.shmall = 1048576
# Максимальное количество сегментов shared memory в системе
kernel.shmmni = 4096sysctl --system4. Тюнинг MPM Event/Worker в конфигурации Apache
Отредактируйте /etc/apache2/mods-available/mpm_event.conf:
<IfModule mpm_event_module>
ServerLimit 32
StartServers 4
ThreadsPerChild 64
MaxRequestWorkers 2048
MaxConnectionsPerChild 10000
</IfModule>5. Запуск веб-сервера
systemctl start apache2 && systemctl status apache2 Частые вопросы (FAQ)
Почему при наличии свободной RAM возникает ошибка 'No space left on device'?
В Linux эта ошибка для apr_shm_create означает исчерпание лимита количества IPC-дескрипторов (kernel.shmmni) или переполнение монтирования tmpfs в каталоге /dev/shm.
Для чего Apache использует модуль mod_slotmem_shm?
Этот модуль предоставляет API разделяемой памяти для межпроцессного взаимодействия балансировщиков mod_proxy_balancer, мониторинга соединений и heartbeat-демонов.