mongodb - WiredTiger - 辅助副本集成员重新同步期间的 “too many open files error”

标签 mongodb wiredtiger

我正在将辅助副本集成员升级到 WiredTiger。我已将它从 MongoDB 2.6.3 升级到 3.0.4,并将存储引擎更改为wiredTiger。现在它正在重新同步主节点的所有数据。 在某些时候收到以下错误,并且该过程重新开始:

2015-07-22T13:18:55.658+0000 I INDEX [rsSync] building index using bulk method

2015-07-22T13:18:55.664+0000 I INDEX [rsSync] build index done. scanned 1591 total records. 0 secs

2015-07-22T13:18:56.397+0000 E STORAGE [rsSync] WiredTiger (24) [1437571136:397083][20413:0x7f3d9ed29700], file:WiredTiger.wt, session.create: WiredTiger.turtle: fopen: Too many open files

2015-07-22T13:18:56.463+0000 E REPL [rsSync] 8 24: Too many open files

2015-07-22T13:18:56.463+0000 E REPL [rsSync] initial sync attempt failed, 9 attempts remaining

同一台机器之前运行的是 2.6.3 版本,没有任何打开文件限制问题。我知道wiredTiger 可能会创建更多文件,所以肯定是这样,但它是否让它们同时打开?

供引用:

cat /proc/sys/fs/file-max

10747371

在/etc/init.d/mongod 中的配置是:

ulimit -n 64000

根据文档,mongo 似乎为每个数据文件都保存了一个文件描述符。与在 WiredTiger 中一样,这会导致每个集合一个文件 + 每个索引一个文件,根据我们用例的计算,加起来可以超过 700K。

所以我可以将 ulimit 更改为 700000 或更高,但我想知道这是否是最正确的解决方案,以及存在哪些替代方案。

最佳答案

WiredTiger 将 clean up open file descriptors基于它们空闲了多长时间,但是在大量集合和索引的繁重事件期间,您最终将受到打开文件的 ulimit 的限制。

所以,是的,基本上你需要增加限制,直到你不再遇到问题,坚持使用 MMAPv1,或者合并一些集合。我还建议您提交一份功能请求,概述您的用例以及您的示例编号,以防止这种类型的模式(例如,每个文件有多个集合)。

关于mongodb - WiredTiger - 辅助副本集成员重新同步期间的 “too many open files error”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31596392/

相关文章:

mongodb - 查询附近与内部

shell - Mongodb shell mongo : Only one usage of each socket address (protocol/network address/port) is normally permitted. 用于套接字 : 0. 0.0.0:27017

MongoDB 副本集初始同步

mongodb - `show collections` 返回的大小是多少?

mongodb - NoSql自连接就像

mongodb - 如何在解码 MongoDB 文档时忽略空值?

mongodb - wiredtiger内存使用量增长

蒙戈数据库 4.4。副本集成员在启动时卡住(WT_VERB_RECOVERY 步骤)

mongodb - 在 WiredTiger 中对 MongoDb 文档执行部分更新是否比完整文档更新有任何优势?