Too many open files 导致 mongodb 宕机的问题及解决方式

再一次业务中一个单节点mongodb 挂掉, 最开始看日志并没有提示错误信息, 找了半天没有发现到底是什么原因。
然后就直接重启,重启正常, 大概过了半天, 发现又挂掉了!!! 当时还是比较着急的,但是这次出现了日志 Too many open files。
有日志就好办了, 这是Linux的文件句柄限制最大打开文件为1024., 很显然在实际生产中是不能满足要求的, 这就需要对它默认值的更改了。

查看文件最大打开数量限制

ulimit -a
# 输出一下信息
core file size        (blocks, -c) 0
data seg size         (kbytes, -d) unlimited
file size             (blocks, -f) unlimited
max locked memory     (kbytes, -l) unlimited
max memory size       (kbytes, -m) unlimited
open files (-n) 1024  # 最大打开文件数
pipe size          (512 bytes, -p) 8
stack size            (kbytes, -s) 8192
cpu time             (seconds, -t) unlimited
max user processes            (-u) 7168
virtual memory        (kbytes, -v) unlimited

临时改变 open file 值

ulimit -n 

可以满足当前登录 增大open file 值, 但是如果重新登录,或打开新的用户open file 值都会恢复默认
这样显然是不能满足要求的

永久修改open file 值

# 修改 /etc/security/limits.conf
# 添加以下代码
* soft nofile 65534
* hard nofile 65534
root soft nofile 65534
root hard nofile 65534

# 修改/etc/pam.d/login添加如下一行
session required /lib/security/pam_limits.so

非Ubuntu不需要 下面两句

root soft nofile 65534
root hard nofile 65534

ubuntu root用户是必须要注明的, 此操作不需要重启服务器, 重新登录即可

可以通过 ulimit -a 查看是否修改成功。

你可能感兴趣的:(MongoDB)