socket.accept error 24: для многих открытых файлов - PullRequest
10 голосов
/ 03 апреля 2010

У меня проблема с открытыми файлами в моем Ubuntu 9.10 при запуске сервера в Python2.6 И главная проблема в том, что я не знаю, почему это так ..

Я установил

ulimit -n = 999999

net.core.somaxconn = 999999

fs.file-max = 999999

и lsof выдает мне около 12000 открытых файлов при работе сервера.

А также я использую epoll.

Но через некоторое время он начинает давать исключения:

Файл "/usr/lib/python2.6/socket.py", строка 195, в файле accept ошибка: [Errno 24] Слишком много открытых файлов

И я не знаю, как он может достичь лимита файла, когда он не достигнут.

Спасибо за помощь)

Ответы [ 2 ]

22 голосов
/ 02 января 2011

Параметры, которые настраивают максимальное количество открытых соединений.

в /etc/sysctl.conf

добавить:

net.core.somaxconn=131072
fs.file-max=131072

и затем:

sudo sysctl -p

в /usr/include/linux/limits.h

изменение:

NR_OPEN = 65536

в /etc/security/limits.conf

добавить:

*                soft    nofile          65535
*                hard    nofile          65535
9 голосов
/ 15 сентября 2014

Вы также можете сделать это из своего кода Python, как показано ниже

import resource
resource.setrlimit(resource.RLIMIT_NOFILE, (65536, 65536))

Второй аргумент - кортеж (soft_limit, hard_limit). Жесткий предел - это потолок для мягкого ограничения. Мягкий предел - это то, что фактически применяется для сеанса или процесса. Это позволяет администратору (или пользователю) установить жесткое ограничение на максимальное использование, которое они хотят разрешить. Другие пользователи и процессы могут затем использовать мягкое ограничение для самоограничения использования своих ресурсов до еще более низких уровней, если они того пожелают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...