#Что означает ошибка
worker_connections are not enough
Сообщение означает, что достигнут лимит worker_connections. Увеличьте значение, проверьте ulimit -n и worker_rlimit_nofile, найдите источник лишних соединений.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Малый лимит | В случае «Nginx: worker_connections are not enough — исчерпан лимит соединений» проверьте наличие причины «Малый лимит» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения. | Сверьте действующие настройки с требованиями этой функции, затем измените только нужный параметр. |
| Лимит файлов | В случае «Nginx: worker_connections are not enough — исчерпан лимит соединений» проверьте наличие причины «Лимит файлов» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения. | Сверьте действующие настройки с требованиями этой функции, затем измените только нужный параметр. |
| Всплеск трафика | В случае «Nginx: worker_connections are not enough — исчерпан лимит соединений» проверьте наличие причины «Всплеск трафика» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения. | Ограничьте |
| Долгие соединения | Сравните поведение через другой доступный канал связи и проверьте, затронуто ли только «Nginx» или остальные приложения тоже. | Сравните параметры подключения с исправным устройством и изменяйте только подтверждённую ошибочную настройку. |
#Пошаговое решение
- Определите причинуЕсли в журнале Nginx встретилось
worker_connections are not enough, запишите время и нагрузку; выполнитеsudo nginx -T 2>&1 | grep -n -E "worker_connections|worker_processes|worker_rlimit_nofile"и посмотрите актуальные лимиты. Не увеличивайте значения произвольно до сотен тысяч без проверки файловых дескрипторов. - Выполните подходящее исправлениеПроверьте
systemctl show nginx -p LimitNOFILEи фактический лимит открытых файлов для рабочих процессов, а также текущие соединения (ss -s). Учитывайте, что обратный прокси может использовать по два соединения на один клиентский запрос; один лишь параметрworker_connectionsне равен числу посетителей. - Проверьте другие возможные причиныПосмотрите, не вызвана ли нехватка соединений длительными запросами upstream, ошибочными настройками keepalive, злоупотреблением ботами или исчерпанием ресурсов. При необходимости ограничьте вредоносную нагрузку адресно и исправьте зависающие приложения; массовая блокировка всех клиентов или отключение защитных ограничений не нужна.
- Убедитесь в результатеЕсли подтверждено, что именно лимит мал, сохраните копию конфига, задайте обоснованное
worker_connectionsв секцииeventsи согласуйте лимит дескрипторов systemd. Проверьтеsudo nginx -t, примените reload и сравните число повторных предупреждений, ошибки 502/503 и использование памяти под типичной нагрузкой.
#Если проблема осталась
При повторении «Nginx: worker_connections are not enough — исчерпан лимит соединений» сохраните обезличенную строку из журнала и верните прежнюю конфигурацию, если правка ухудшила работу сайта. Уточните активную версию процесса и конфигурационный файл, прежде чем предпринимать следующий шаг.