Nginx и ошибка «Too many open files»

Nginx и ошибка «Too many open files»

Ошибка «Too many open files» нередко встречается при высокой нагрузке на веб-сервер. На VPS она может приводить к сбоям в работе сайтов и недоступности ресурсов. Разберём, почему возникает эта ошибка в Nginx и как правильно увеличить лимиты, чтобы сервер снова работал стабильно.

Введение

Ошибка failed (24: Too many open files) — одна из распространённых проблем при эксплуатации Nginx на высоконагруженных VPS-серверах. Она означает, что процесс Nginx достиг предельного количества открытых файловых дескрипторов, которое разрешено операционной системой.

Каждое соединение с сайтом, файл журнала или активный сокет занимает один файловый дескриптор. Когда таких соединений становится слишком много, сервер больше не может открыть новые файлы и начинает выдавать ошибку 24. В результате сайты перестают отвечать, а в логах появляются сообщения о нехватке дескрипторов.

По умолчанию в Linux лимиты довольно скромные — часто всего 1024 открытых файлов на процесс. Для современного Nginx этого недостаточно: особенно если на VPS работает несколько сайтов, CDN, прокси-сервисы или активное логирование.

Ниже показано, как увеличить эти лимиты на уровне системы и самого Nginx, чтобы избежать ошибок и стабилизировать работу веб-сервера.

Аренда VPS/VDS — от ₽219/месяц

Почему выбирают VPS от AdminVPS:

✓ Дешевле физического сервера

✓ Более гибкий и мощный, чем обычный хостинг

✓ Бесплатная защита от DDoS и техподдержка 24/7

✓ Масштабируется под любые задачи

Виртуальный сервер VPS/VDS — ваш личный сервер для сайтов, магазинов, ботов и других проектов.

popup12

Настройка системных лимитов

Откройте файл /etc/security/limits.conf и добавьте строку:

* - nofile 999999

Эта настройка задаёт максимальное число открытых файлов для всех пользователей.

Затем от имени root временно примените лимит командой:

ulimit -n 999999

Чтобы новые значения применялись автоматически при запуске системы, проверьте, что параметры pam_limits.so подключены в:

/etc/pam.d/common-session

а также здесь:

/etc/pam.d/common-session-noninteractive.

Настройка лимита внутри Nginx

Откройте основной конфигурационный файл Nginx:

/etc/nginx/nginx.conf

И добавьте параметр:

worker_rlimit_nofile 25000

Эта директива сообщает, сколько файлов может открыть один рабочий процесс Nginx. Значение должно быть меньше или равно системному лимиту, но достаточным для текущей нагрузки.

Применение изменений

После внесения изменений перезапустите службу:

service nginx reload

или, если используется systemd:

systemctl reload nginx

Теперь сервер сможет открывать больше соединений одновременно, а ошибка «Too many open files» исчезнет из логов.

Заключение

Ошибка «Too many open files» в Nginx — это не сбой самого веб-сервера, а ограничение на уровне операционной системы. Увеличение лимитов файловых дескрипторов и корректная настройка параметров Nginx позволяют решить проблему окончательно.

Для VPS-проектов такая профилактика особенно важна: чем выше нагрузка, тем быстрее достигаются системные пределы. Регулярно проверяйте лимиты, логи и производительность, чтобы ваши сайты на AdminVPS оставались быстрыми и надёжными даже при пиковых обращениях.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Нужен VPS сервер?

Арендуйте мощный VPS сервер для ваших проектов! Быстрая настройка, высокая производительность и надежная поддержка 24/7. Начните прямо сейчас!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях