解决Python [Errno 24] Too many open files:ulimit限制与修改方法

顾言
顾言
发布时间:2026-10-13 | 2人浏览过
原创

本文分析Python多线程程序中频繁出现的[Errno 24] Too many open files错误。该错误通常由系统默认的文件描述符限制(如1024)低于程序需求引起。通过修改/etc/security/limits.conf文件并重新登录,可将限制提升至更高数值(如10240),从而解决高并发扫描时的资源耗尽问题。

背景

近期在开发工作中,运行多线程扫描脚本时频繁遭遇如下报错信息:

HTTPConnectionPool(host=‘t.tips', port=80): Max retries exceeded with url: /index.php (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f29d4081150>: Failed to establish a new connection: [Errno 24] Too many open files',))

这一现象显得有些反常……

原因分析

博主负责的一些小型项目常需通过多线程批量扫描来采集数据。鉴于数据采集任务中线程数量越多效率越高,通常我会配置3000个线程进行扫描。即便在带宽充足且系统硬件配置较高的环境下,上述错误依然发生,这促使我怀疑是否受限于系统层面的资源限制。

经搜索引擎查询系统限制相关文档,执行以下命令进行查看:

$ ulimit -n
1024

返回结果显示为1024,表明系统默认限制同时打开的文件描述符数量为1024个,这对于高并发场景显然过低。

解决方案

解决此问题十分简单,只需修改以下配置文件:

sudo vim /etc/security/limits.conf

在该文件的末尾添加如下两行配置:

* soft nofile 10240
* hard nofile 10240

上述数值可根据实际业务需求进行调整。保存文件后,注销并重新登录系统即可生效。

总结

以上即为本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表