Ошибка «Too many open files» нередко встречается при высокой нагрузке на веб-сервер. На VPS она может приводить к сбоям в работе сайтов и недоступности ресурсов. Разберём, почему возникает эта ошибка в Nginx и как правильно увеличить лимиты, чтобы сервер снова работал стабильно.
Введение
Ошибка failed (24: Too many open files) — одна из распространённых проблем при эксплуатации Nginx на высоконагруженных VPS-серверах. Она означает, что процесс Nginx достиг предельного количества открытых файловых дескрипторов, которое разрешено операционной системой.
Каждое соединение с сайтом, файл журнала или активный сокет занимает один файловый дескриптор. Когда таких соединений становится слишком много, сервер больше не может открыть новые файлы и начинает выдавать ошибку 24. В результате сайты перестают отвечать, а в логах появляются сообщения о нехватке дескрипторов.
По умолчанию в Linux лимиты довольно скромные — часто всего 1024 открытых файлов на процесс. Для современного Nginx этого недостаточно: особенно если на VPS работает несколько сайтов, CDN, прокси-сервисы или активное логирование.
Ниже показано, как увеличить эти лимиты на уровне системы и самого Nginx, чтобы избежать ошибок и стабилизировать работу веб-сервера.
Настройка системных лимитов
Откройте файл /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 оставались быстрыми и надёжными даже при пиковых обращениях.
Читайте в блоге:
- Основные команды для управления VPS-контейнерами на OpenVZ
- Почему время в MySQL отличается от времени PHP и системы и как это исправить
- Базовое администрирование Linux через Python

