刘贵学博客

MongoDB 连接数耗尽的解决方法

问题

今天突然发现数据库的连接特别迟缓,本地Robo 3T 客户端都连接不上,登陆阿里云后台发现连接数已经到达 500 达到最大值。

原因分析

由于阿里云的MongoDB服务器不能直接暴露给外网访问,开发机器如要访问MongoDB,需要通过一台ECS 路由中转访问。中转服务器使用 rinetd 工具做端口映射,连接没有释放的原因应该是 中转服务器与Mongodb服务器的连接被 rinetd 缓存住了。

解决方案

重启ECS 上的 rinetd 服务即可,执行命令:

rinetd restart

结果提示错误:

rinetd: couldn't bind to address 0.0.0.0 port 27099

看下 27099 这个端口被谁占用呢?

netstat -ltnp | grep ':27099'
tcp        0      0 0.0.0.0:27099           0.0.0.0:*               LISTEN      8633/rinetd

把 8633 这个进程 kill 掉就可以

pkill rinetd
rinetd restart