Debian 9
# 使用通用二进制方式安装# mongod --version db version v3.4.21-2.19git version: 2e0631f5e0d868dd51b71e1e55eb8a57300d00dfOpenSSL version: OpenSSL 1.0.2q 20 Nov 2018allocator: tcmallocmodules: nonebuild environment: distarch: x86_64 target_arch: x86_64
程序连接数据库报错,mongodb日志中显示connection refused because too many open connections: 819
。
初步判定是mongodb的连接数满了。
xxx:PRIMARY> db.serverStatus().connections{ "current" : 819, "available" : 0, "totalCreated" : 1132 }
--> 连接数果然满了
2. 尝试修改连接数,mongo启动时增加 --maxConns 20000
参数,重启mongo,一会连接数又满了,一些资料上说最大是 20000,默认是1024 * 0.8 个
3. 查看 ulimit -n,这个值是 1048576,符合预期。
4. 修改 supervisord 的配置 minfds=1024
为 100000,重启后查看连接数,符合预期。
xx:PRIMARY> db.serverStatus().connections{ "current" : 1220, "available" : 78780, "totalCreated" : 2158 }
mongod的连接数受限于
最终,只设置minfds参数,不设置maxConns 参数,这样连接数由 supervisor 控制。