系统配置
设置ulimit
MongoDB的文件机制
- 每个Collection会单独创建一个数据文件(collection-xxxxxx.wt)
- 每个索引会单独创建一个文件(index-xxxxxx.wt)
- 每个Collection至少需要一个数据文件和一个默认索引(_id索引)
这样每创建1个Collection会占用2个文件句柄, 还需要包含MongoDB自身需要使用的句柄(内部文件如wiredTiger.wt之类, 加上网络连接), 所以Collection的数量是受系统限制的. MongoDB推荐的方式是分片, 不是分库分表. 会造成的问题比如重启时间会很长, 这不是MongoDB推荐的使用方式.
在句柄消耗达到系统上限后, 会报directory-sync: open: Too many open files错误, 并导致mongod崩溃退出. 增加限制需要修改/etc/security/limits.conf (或者 /etc/security/limits.d/20-nproc.conf), 增加或修改为以下内容
* soft nofile 10240 * hard nofile 10240 * soft nproc 10240 * hard nproc 10240 root soft nproc unlimited
需要重启, 用 ulimit -n 检查