按应用和客户端统计连接(连接风暴诊断)
MongoDB性能命令
// Total, available and rejected connection counts:
db.serverStatus().connections
// Count connections by application name and client IP:
db.getSiblingDB("admin").aggregate([
{ $currentOp: { allUsers: true, idleConnections: true } },
{ $group: { _id: { app: "$appName", client: { $arrayElemAt: [{ $split: ["$client", ":"] }, 0] } }, conns: { $sum: 1 }, active: { $sum: { $cond: ["$active", 1, 0] } } } },
{ $sort: { conns: -1 } },
{ $limit: 20 }
])作用
显示服务器上的总连接数和可用连接数,然后按 appName 和客户端 IP 对打开的连接分组,并给出其中活动连接的数量。
适用场景
连接数突然飙升、出现 'connection refused' 或连接池超时错误时,用于找出哪台应用服务器泄漏连接。
注意
idleConnections: true 还会返回所有空闲连接,在有数千个连接的系统上输出很大;因此用 $group 汇总很重要。client 为 null 的行是内部线程。每个连接约消耗 1 MB 内存;连接风暴还会使 WiredTiger 缓存之外的内存增长。