请告知:MongoDB在 Window Server 2016 上返回“errno:24 Too many open files”错误

问题描述

我在使用 MongoDB 聚合管道运行 python 脚本后遇到问题。错误

errno:24 Too many open files,full error: {'ok': 0.0,'errmsg': 'error opening file "D:\\MongoDB\\Server\\4.4\\data/_tmp/extsort-doc-group.463": errno:24 Too many open files','code': 16814,'codeName': 'Location16814'}

托管 Mongo 数据库的服务器是

Window Server 2016

当我通过将跨度日从 7 天减少到 3 天来限制数据数量时,问题就消失了,脚本将成功运行并给出结果。

这个脚本已经运行了几个星期,设置了 7 天,没有问题。所以不知道为什么?有什么建议或意见吗?

谢谢。

解决方法

根据 MongoDB 文档 here,建议为 open file limit 设置一个上限。对于 Ubuntu,我们通常通过更改特定于用户和限制类型的 /etc/security/limits.conf 中的限制来实现。不同的发行版有不同的方法。要检查限制,一个简单的 ulimit -a 会很有帮助。

运行数据库的 IMO 机器应该对打开的文件和进程数有很高的限制。此外,MongoDB 还提供了大量与要使用的分页和磁盘类型相关的建议。我建议通过它们来使用 MongoDB 以发挥其潜力。

我很久没有在 Windows 机器上工作了,我相信如果您尝试找到如何增加打开文件限制的方法,您会发现它。此外,当您将查询从 7 天减少到 3 天时,wired-tiger 必须访问以获取索引和磁盘操作的文件也减少了,并且它可能允许您运行查询。请注意,与某些数据库不同,mongodb-wiredtiger 中的文件系统组织略有不同。