Назад | Перейти на главную страницу

Слишком много файловых дескрипторов в Debian, ulimit -n не действует

Позвольте мне получить все ответы ulimit -n и /etc/security/limits.conf, сказав следующее: Я пробовал установить ulimit -n на 2048, 4096 и 65535. Я установил как soft, так и жесткое ограничение для всех этих значений nofiles. ulimit -n показывает, что он был изменен. Но при запуске сервера у него все еще может быть только 1024 открытых сокета. accept не работает с ошибкой 24 (слишком много открытых подключений).

После нескольких часов поиска в Google, вопросов в #debian и чтения вопросов о ServerFault я все еще не нашел решения. Почему ulimit -n показывает одно число, но по-прежнему ограничивается 1024 дескрипторами открытых файлов?

Некоторая потенциально полезная информация: процесс запускается в терминале на экране в su. Да, я добавил pam_limits.so в /etc/pam.d/su. Я также добавил его в /etc/pam.d/common-session. По-прежнему не повезло.

Неважно, оказывается, проблема заключалась в комбинации ulimit -n и FD_SETSIZE. Похоже, что приложение использует setrlimit для установки ulimit -n в FD_SETSIZE. Я исправил это, отменив определение и переопределив __FD_SETSIZE на что-то большее.

Что вам говорит эта команда?

sysctl fs.file-max

Вы можете попробовать:

sysctl -w fs.file-max=[bigger-number]

Если это сработает, добавьте это в свой /etc/sysctl.conf файл:

fs.file-max = [bigger-number]