Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

APACHE_SLOTMEM_SHM_OOM Linux / DevOps

Траблшутинг сбоев Apache: нехватка shared memory (модуль mod_slotmem_shm)

Обновлено: 21.08.2026
  • Веб-сервер 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/shm

2. Аварийная очистка зависших сегментов памяти

Остановите сервис и удалите осиротевшие сегменты 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"
done

3. Увеличение лимитов 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 = 4096
sysctl --system

4. Тюнинг 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
💡 Практика специалистов: Всегда задавайте директиву 'MaxConnectionsPerChild > 0' (например, 10000), чтобы рабочие процессы периодически перезапускались и автоматически освобождали фрагментированные слоты памяти.

Частые вопросы (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-демонов.

Полезные материалы
Рекомендуем