nginx: worker process exited on signal
nginx устойчив к падению рабочих процессов: главный процесс поднимает новый, и сайт продолжает отвечать. Но каждое падение — это оборванные запросы, и повторяющиеся сообщения означают настоящую проблему: чаще всего в стороннем модуле.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Падает сторонний модуль
Модули для сжатия, геобазы, скриптов на Lua падают чаще самого nginx, особенно после обновления одной части без другой.
-
Нехватка памяти рабочему процессу
Большие буферы на запрос при многих соединениях исчерпывают память. Ядро убивает рабочий процесс, nginx поднимает новый.
-
Дамп памяти не сохраняется, и причина неизвестна
Без дампа остаётся только гадать, в каком модуле сбой.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Сигнал, с которым падал процесс, и частота падений.
sudo tail -40 /var/log/nginx/error.log | grep -i "worker process"Сохранённые дампы, если они разрешены.
coredumpctl list --no-pager | tail -5Версия и модули сборки: частый источник падений.
nginx -V 2>&1 | head -3Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Модули для сжатия, геобазы, скриптов на Lua падают чаще самого nginx, особенно после обновления одной части без другой.
- Как проверить
-
Посмотрите сигнал и список модулей сборки.
sudo tail -30 /var/log/nginx/error.log | grep -i "worker process" nginx -V 2>&1 | tr " " "\n" | grep add-module
- Как исправить
- Отключите подозрительный модуль и проверьте, прекратились ли падения. Дальше — обновление модуля или отказ от него.
- Почему происходит
- Большие буферы на запрос при многих соединениях исчерпывают память. Ядро убивает рабочий процесс, nginx поднимает новый.
- Как проверить
-
Посмотрите записи ядра и настройки буферов.
journalctl -k -b --no-pager | grep -i "killed process" | grep -i nginx sudo nginx -T 2>/dev/null | grep -E "buffer|buffers"
- Как исправить
- Уменьшите буферы или число рабочих соединений: считать надо по формуле «соединения умножить на буферы».
- Почему происходит
- Без дампа остаётся только гадать, в каком модуле сбой.
- Как проверить
-
Посмотрите предел дампов у службы.
systemctl show nginx -p LimitCORE coredumpctl list --no-pager | tail -5
- Как исправить
-
Разрешите дампы на время разбора:
LimitCORE=infinityв переопределении unit иworking_directoryв настройках nginx для записи дампа.
Пример вывода
Рабочий процесс упал в стороннем модуле. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
2026/09/15 16:02:41 [alert] 1120#1120: worker process 1121 exited on signal 11 (core dumped)
2026/09/15 16:02:41 [notice] 1120#1120: start worker process 1140
coredumpctl info nginx | grep -A3 "Stack trace"
#0 0x00007f2a1c4b21a0 ngx_http_geoip2_variable (ngx_http_geoip2_module.so)
Связанные ошибки
- signal=SEGV (status=11/SEGV) в systemd Процесс службы завершён сигналом SEGV: обращение к недопустимой памяти. Как собрать дамп и что смотреть.
- Failed with result 'core-dump' Состояние core-dump: процесс службы аварийно завершился и сохранил дамп памяти. Как открыть дамп и прочитать трассировку.
- Failed with result 'oom-kill' Состояние oom-kill: процесс службы убит из-за нехватки памяти. Как понять, упёрлись в предел службы или в память машины.
- nginx 403 Forbidden и Permission denied на файлы сайта nginx отдаёт 403: нет прав на файлы сайта, закрыт каталог по пути, мешает SELinux или AppArmor, нет индексного файла.
- nginx 413 Request Entity Too Large Загрузка файла отклонена: превышен client_max_body_size. Где менять и что ещё ограничивает размер.
- nginx 502 Bad Gateway: connect() failed к приложению nginx работает, а приложение недоступно: connect() failed, connection refused, no such file or directory для сокета. Разбор 502.
- nginx 504 Gateway Time-out: upstream timed out nginx не дождался ответа приложения. Разбор таймаутов proxy_read_timeout и fastcgi_read_timeout, поиск медленных мест.
- nginx reload не применяет изменения Перезагрузка nginx прошла, а изменения не действуют: правка не в том файле, файл не включён, кеш, старые рабочие процессы.
Где встречается чаще всего
Источники
- Документация nginx: отладка
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено падением стороннего модуля на тестовой сборке.