我的mongodb服务器经常崩溃,并显示错误“打开的文件太多”。
操作系统是debian 8:
Linux VM-64-58-debian 3.16.0-4-amd64#1 SMP Debian 3.16.51-3(2017-12-13)x86_64 GNU / Linux
和MongoDB版本3.4.5。
我通过以下步骤安装mongodb:
创建脚本文件mongo.auto,并将其chmod + x。
/mongodb/bin/mongos --config /mongodb/config/dbs.config --fork
创建/etc/init.d/mongo.sh,并对其进行chmod + x。
#! /bin/sh
### BEGIN INIT INFO
# Provides:
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
############### EDIT ME ##################
# path to app
# user
RUN_AS=mongodb
sudo -u mongodb /mongodb/bin/mongo.auto
设置为自动运行服务:
insserv mongo.sh
完成。
对于“打开的文件太多”,我检查了/ proc / pid / limits,返回:
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 63596 63596 processes
Max open files 1024 4096 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 63596 63596 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
我尝试了以下四种方法:
将ulimit添加到/etc/rc.local
ulimit -SHn 65535
将ulimit添加到/ etc / profile
ulimit -SHn 65535
将设置添加到/etc/security/limits.conf
mongodb soft nofile 65535
mongodb hard nofile 65535
将设置添加到/etc/sysctl.conf
fs.file-max=65535
我已经检查了/etc/pam.d/login
session required pam_limits.so
该行未屏蔽。
每次尝试后我都重新启动服务器。
有了这些,会话/ shell的“最大打开文件数”更新为65535,而/ proc / pid / limits从未更改,仍然保持1024。
有什么建议吗?
答案 0 :(得分:0)
经过几天的研究,我找到了解决方法。
我使用/etc/inid.d/mongo.sh作为自动运行脚本,并使用
sudo -u mongodb /mongodb/bin/mongo.auto
作为启动脚本。 所以我需要用sudo设置pam auth。
因此解决方案是-在/etc/pam.d中,它需要在下面附加到/etc/pam.d/sudo
session required pam_limits.so
然后重新启动,完成。