Позвольте мне получить все ответы 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]