mongdb

Mongodb 崩溃报错 Too many open files的问题解析

Mongodb 崩溃报错 Too many open files的问题解析
在项目实际使用过程中,客户反馈能打开网页但无法登陆,第一时间感觉到应该是数据库服务器挂了,于是查看Mongodb数据库服务器日志,果不其然挂了,报错信息如下:

2020-12-28T13:21:21.731+0800 E STORAGE [conn2624] WiredTiger error (24) [1609132881:731616][23581:0x7fe157189700], WT_SESSION.create: __posix_directory_sync, 151: /data1/mongodb/data/db/collection-1063-1706476241051221735.wt: directory-sync: Too many open files Raw: [1609132881:731616][23581:0x7fe157189700], WT_SESSION.create: __posix_directory_sync, 151: /data1/mongodb/data/db/collection-1063-1706476241051221735.wt: directory-sync: Too many open files

1
2

问题原因:

系统打开文件数达到上限
造成如上问题的原因就是Centos7给每个用户默认的同时打开文件的数值是1024,可以通过ulitme -u 命令进行查看

1
2

问题解决:

1、修改 limits.conf 默认参数,在文件下新增如下内容:
* soft nofile 65536
* hard nofile 65536
PS:如上方法保存后,需要重启系统才能永久生效

2、动态修改(不需要重启系统及mongo)
2.1、查看mongodb服务pid文件
ps aux | grep mongo
2.2、获取pid文件后,查看对应pid limits,如下命令
cat /proc/95051/limits
2.3、运行如下命令,实现动态更改
prlimit –pid 95051 –nofile=65535:65535
2.4、再次查看,修改成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14

建议

建议新增服务器首先更改系统默认参数