首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >socket.accept错误24:对许多打开的文件

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

Stack Overflow用户
提问于 2010-04-03 06:56:38
回答 3查看 30.3K关注 0票数 12

当我在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打开的文件太多

我不知道当它还没有达到的时候,它怎么会达到文件限制。

感谢您的帮助)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-02 20:26:38

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

在/etc/sysctl.conf

添加:

代码语言:javascript
复制
net.core.somaxconn=131072
fs.file-max=131072

然后:

代码语言:javascript
复制
sudo sysctl -p

在/usr/include/linux/limits.h

更改:

代码语言:javascript
复制
NR_OPEN = 65536

在/etc/security/limits.conf

添加:

代码语言:javascript
复制
*                soft    nofile          65535
*                hard    nofile          65535
票数 28
EN

Stack Overflow用户

发布于 2014-09-15 19:03:54

您也可以从python代码中执行此操作,如下所示

代码语言:javascript
复制
import resource
resource.setrlimit(resource.RLIMIT_NOFILE, (65536, 65536))

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

票数 13
EN

Stack Overflow用户

发布于 2020-03-06 00:28:45

如果您正在使用supervisord来运行您的进程,那么上面提到的一切可能还不够。这是因为supervisord对其进程的打开文件的限制有自己的配置。

在/etc/supervisord.conf上

代码语言:javascript
复制
[supervisord]
...
minfds=1024;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2569620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档