繁体   English   中英

Python太多打开的文件,eventlet和multiprocessing.dummy

[英]Python too many open files, eventlet and multiprocessing.dummy

我有一个在Linux上运行的Python 2.7脚本,该脚本因IOError: [Errno 24] Too many open files崩溃IOError: [Errno 24] Too many open files 当我运行lsof -p <script_pid>来查看脚本打开了哪些文件时,我看到anon_inode文件的数量anon_inode增加。

该脚本首先使用eventlet从S3下载文件以实现并发。 然后,它使用multiprocessing.dummy进行多线程处理下载的文件。 我已经独立运行了多线程代码,发现当我为eventlet包括以下猴子补丁时,它只会泄漏文件描述符:

patcher.monkey_patch(thread=False)

我将如何解决此问题的任何想法将不胜感激!

我也遇到了这个问题,在Ubuntu上,至少普通用户的打开文件限制默认为4096。因此,如果您要同时拥有约4000个以上的同时连接,则需要对此进行改进。

解决方案提高打开文件描述符的限制

这是在Ubuntu上做的方法

/etc/security/limits.conf的末尾添加一行

* soft nofile 16384    
* hard nofile 16384

第一列描述了世卫组织将要申请的限额。 *是通配符,表示所有用户。 要提高对root的限制,必须显式输入“ root”而不是“ *”。

您还需要编辑/etc/pam.d/common-session*并将以下行添加到末尾:

session required pam_limits.so

注销,然后重新登录,然后才能使用新的最大限制,使用

ulimit -n

https://askubuntu.com/questions/162229/how-do-i-increase-the-open-files-limit-for-a-non-root-user

这也是一篇关于使用事件变量的注意事项的好文章https://code.mixpanel.com/2010/10/29/gevent-the-good-the-bad-the-ugly/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM