当我在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打开的文件太多
我不知道当它还没有达到的时候,它怎么会达到文件限制。
感谢您的帮助)
发布于 2011-01-02 20:26:38
配置最大开放连接数的参数。
在/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发布于 2014-09-15 19:03:54
您也可以从python代码中执行此操作,如下所示
import resource
resource.setrlimit(resource.RLIMIT_NOFILE, (65536, 65536))第二个参数是元组(soft_limit, hard_limit)。硬限制是软限制的上限。软限制是对会话或进程实际执行的限制。这允许管理员(或用户)将硬限制设置为他们希望允许的最大使用。然后,其他用户和进程可以使用软限制将其资源使用自我限制到更低的级别。
发布于 2020-03-06 00:28:45
如果您正在使用supervisord来运行您的进程,那么上面提到的一切可能还不够。这是因为supervisord对其进程的打开文件的限制有自己的配置。
在/etc/supervisord.conf上
[supervisord]
...
minfds=1024;https://stackoverflow.com/questions/2569620
复制相似问题