MongoDB报Too many open files解决方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MongoDB报Too many open files解决方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4663字,纯文字阅读大概需要7分钟。
内容图文
![MongoDB报Too many open files解决方法](/upload/InfoBanner/zyjiaocheng/913/af9d14f7ddc94efc80621f09328584bb.jpg)
切记更改完成后要重启服务才能生效。
最近用户使用量不断扩大,突然手机app提示网络错误,经过排查发现是MongoDB数据挂了,先启动服务,然后查看日志
发现了
2019-05-06T09:51:36.626+0800 I NETWORK [initandlisten] Listener: accept() returns -1 errno:24 Too many open files
2019-05-06T09:51:36.626+0800 E NETWORK [initandlisten] Out of file descriptors. Waiting one second before trying to accept more connections.
2019-05-06T09:51:36.638+0800 F - [conn3177] Got signal: 6 (Aborted).
具体错误应该是 Too many open files
然后发现设置的默认打开文件数是1024
[bjjh@database]$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 31213
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
现在就设置成65535
-
1)修改当前交互终端的limit值
查询当前终端的文件句柄数: ulimit -n 回车,一般的系统默认的1024.
修改文件句柄数为65535,ulimit -n 65535.此时系统的文件句柄数为65535. -
2)将ulimit 值添加到/etc/profile文件中(适用于有root权限登录的系统)
为了每次系统重新启动时,都可以获取更大的ulimit值,将ulimit 加入到/etc/profile 文件底部。
echo ulimit -n 65535 >>/etc/profile
source /etc/profile #加载修改后的profile
ulimit -n #显示65535,修改完毕! - 3)都以为大功告成了,可以突然发现自己再次登录进来的时候,ulimit的值还是1024,这是为什么呢?
关键的原因是你登录的用户是什么身份,是不是root用户,由于服务器的root用户权限很大,一般是不能用来登录的,都是通过自己本人的登录权限进行登录,并通过sudo方式切换到root用户下进行工作。 用户登录的时候执行sh脚本的顺序:
/etc/profile.d/file
/etc/profile
/etc/bashrc
/mingjie/.bashrc
/mingjie/.bash_profile
由于ulimit -n的脚本命令加载在第二部分,用户登录时由于权限原因在第二步还不能完成ulimit的修改,所以ulimit的值还是系统默认的1024。
解决办法:
修改linux的软硬件限制文件/etc/security/limits.conf.
在文件尾部添加如下代码:
* soft nofile 10240
* hard nofile 10240
- 4)经过以上修改,在有些系统中,用一般用户再登陆,仍然没有修改过来,那么需要检查是否有如下文件,如果没有,则要添加如下内容:
# vim /etc/pam.d/sshd
[Add the line]
session required /lib/security/pam_limits.so
# service sshd restart
5)如果仍然不行,那么需要修改如下文件:
# vim /etc/ssh/sshd_config
[May need to modify or add the line]
UsePrivilegeSeparation no
设置完成后登陆root用户执行
ulimit -n检查
在登陆普通用户进行检查
如果查看更改是否生效
[root@Oracle11G bjjh]# ps -ef|grep mongo
root 1752 1 0 May05 ? 00:16:40 mongod -f /etc/mongod.conf
root 12887 11251 0 15:28 pts/1 00:00:00 grep mongo
[root@Oracle11G bjjh]# cat /proc/1752/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 10485760 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 61865 61865 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 61865 61865 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
查看这个值是否更改成你设置的值,如果没有的话可以重启服务。
如何查看现在打开的文件数
[root@Oracle11G bjjh]# ps -ef|grep mongo
root 1752 1 0 May05 ? 00:16:40 mongod -f /etc/mongod.conf
root 12887 11251 0 15:28 pts/1 00:00:00 grep mongo
[root@Oracle11G bjjh]# cd /proc/1752/fd
[root@Oracle11G fd]# ls |wc -l
102
查看打开文件数
内容总结
以上是互联网集市为您收集整理的MongoDB报Too many open files解决方法全部内容,希望文章能够帮你解决MongoDB报Too many open files解决方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。