记一次mongo服务端无法建立更多连接造成的客户端无法访问mongo集群的故障分析及解决
一. 问题:
程序无法连接mongo集群
现象:
2017-09-05T01:29:08.765+0000 I NETWORK [thread2] connection refused because too many open connections: 819
二. 排查及解决
1. 本地测试访问mongo主机及端口
telnet 192.168.1.100 20000
正常访问,端口存在
2. 登陆mongo主机查看进程和端口是否存在。
查看进程
ps -ef | grep mongo
查看端口
netstat -ntlp
确认进程和端口都正常运行
3. 查看日志
tail -f /data/mongodb/log/mongos.log
从log文件中可以看出connection refused because too many open connections: 819,不能建立更多的连接造成,mongo服务端主动拒绝,造成客户端无法访问。于是想到系统允许进程打开的的最大文件具柄数的限制。
三. 分析解决
1. 查看系统默认的最大文件句柄数,系统默认是1024
# ulimit -n
1024
参数:
命令参数
-a 显示所有限制
-c core文件大小的上限
-d 进程数据段大小的上限
-f shell所能创建的文件大小的上限
-m 驻留内存大小的上限
-s 堆栈大小的上限