当前使用 NGINX 作为分片 mongo 集群上游的负载均衡器。
.conf 内容如下:
stream {
upstream prodapp_mongo {
least_conn;
server xxx.xxx.xxx.xxx:27017;
server xxx.xxx.xxx.xxx:27017;
server xxx.xxx.xxx.xxx:27017;
}
server {
listen 27017;
proxy_connect_timeout 25s;
proxy_timeout 60s;
proxy_pass prodapp_mongo;
error_log /var/log/nginx/mongo.error.log;
}
}
stub_status 输出:
Active connections: 15751
server accepts handled requests
15070690 15070506 129824
Reading: 0 Writing: 2 Waiting: 0
大约 14 个小时内,活动连接数似乎一直徘徊在 15k 左右,我担心为什么它们没有处于读取/写入/等待状态。
我们的数据报告显示,这段时间内连接数量稳步增加,我正在尝试进一步挖掘“为什么”会有这么多活跃连接,以及这些连接在做什么?
答案1
“为什么”有这么多活跃连接
nginx 减少Active connections
数量客户端连接关闭时,因此可以肯定那里有很多空闲连接。它已建立,但目前未发送/接收任何数据。
通过连接到数据库并运行来检查 mongodb 的数据库连接
db.serverStatus().connections
这些在做什么?
由于您没有描述您的应用程序/数据库客户端,它可能来自应用程序方面,例如来自数据库驱动程序的连接池、应用程序的持久连接,甚至非close()
d 连接。