为什么 MongoDB 返回“errno:24 Too much open files”错误

问题描述 投票:0回答:2

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

errno:24 打开文件太多,完整错误:{'ok': 0.0, 'errmsg': '打开文件“D:\MongoDB\Server .4\data/_tmp/extsort-doc-group.463”时出错” : errno:24 打开文件太多', '代码': 16814, 'codeName': 'Location16814'}

托管 Mongo 数据库的服务器是 Windows Server 2016

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

此脚本之前已经运行了几周,设置为 7 天,没有出现问题。

python mongodb windows-server-2016
2个回答
0
投票

根据 MongoDB 文档here,建议为

open file limit
设置较高的限制。对于 Ubuntu,我们通常通过更改
/etc/security/limits.conf
中特定于用户和限制类型的限制来实现此目的。不同的发行版有不同的方法。要检查限制,简单的
ulimit -a
会非常有帮助。

运行数据库的 IMO 机器应该对打开文件和进程计数有很高的限制。此外,MongoDB 还提供了一系列与要使用的分页和磁盘类型相关的建议。我建议仔细阅读它们以充分发挥 MongoDB 的潜力。

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


0
投票

通过运行检查文件描述符限制:

$ ulimit -a

我的系统打开文件限制的结果:

open files   (-n) 4096

要暂时增加当前会话的限制,请使用这个,它对我有用。

$ ulimit -n 8192
© www.soinside.com 2019 - 2024. All rights reserved.