socket.accept错误24:对许多打开的文件

And*_*aev 11 python sockets exception file

在Python2.6中运行服务器时,我的Ubuntu 9.10下打开文件有问题,主要问题是,我不知道为什么会这样...

我已经设定

ulimit -n = 999999

net.core.somaxconn = 999999

fs.file-max = 999999

当服务器运行时,lsof给了我大约12000个打开的文件.

而且我也在使用epoll.

但过了一段时间后,它开始给出例外:

文件"/usr/lib/python2.6/socket.py",第195行,接受错误:[Errno 24]打开文件太多

而且我不知道它何时达不到文件限制.

感谢帮助)

And*_*aev 23

配置最大开放连接的参数.

在/etc/sysctl.conf

加:

net.core.somaxconn=131072
fs.file-max=131072
Run Code Online (Sandbox Code Playgroud)

然后:

sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)

在/usr/include/linux/limits.h

更改:

NR_OPEN = 65536
Run Code Online (Sandbox Code Playgroud)

在/etc/security/limits.conf

加:

*                soft    nofile          65535
*                hard    nofile          65535
Run Code Online (Sandbox Code Playgroud)


Mak*_*cha 10

您也可以使用下面的python代码执行此操作

import resource
resource.setrlimit(resource.RLIMIT_NOFILE, (65536, 65536))
Run Code Online (Sandbox Code Playgroud)

第二个参数是元组(soft_limit, hard_limit).硬限制是软限制的上限.软限制是会话或进程实际执行的内容.这允许管理员(或用户)将硬限制设置为他们希望允许的最大使用量.然后,其他用户和进程可以使用软限制将其资源使用自我限制为甚至更低级别(如果他们愿意的话).