PyMongo MongoClient:如何查看当前打开的连接数?
如何查看MongoClient某一时刻的已打开连接数?
当然可以查看特定MongoClient在某一时刻的已打开连接数,不同语言的MongoDB驱动提供了不同的实现方式,以下是主流驱动的操作方法:
Java 驱动
通过MongoClient的指标获取方法可以直接拿到连接池的实时数据:
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); ConnectionPoolMetrics poolMetrics = mongoClient.getMetrics().getConnectionPoolMetrics(); // 遍历每个服务器的连接池指标 for (ConnectionPoolMetric metric : poolMetrics) { System.out.println("目标服务器: " + metric.getServerAddress()); System.out.println("已打开并借出的连接数: " + metric.getCheckedOutConnections()); System.out.println("连接池空闲连接数: " + metric.getAvailableConnections()); }
也可以通过注册ConnectionPoolListener来监听连接的创建、借出、归还等事件,自定义统计逻辑。
Python PyMongo 驱动
直接调用MongoClient的stats()方法,返回的结果中包含当前客户端的已打开连接数:
from pymongo import MongoClient client = MongoClient("mongodb://localhost:27017") client_stats = client.stats() print(f"已打开连接数: {client_stats['open_connections']}")
Node.js MongoDB 驱动
通过客户端的拓扑结构获取连接池实例,进而查看已打开的连接数量:
const { MongoClient } = require('mongodb'); async function queryOpenConnections() { const uri = "mongodb://localhost:27017"; const client = await MongoClient.connect(uri); // 获取连接池内的活跃连接列表长度 const openConnCount = client.topology.s.pool.connections.length; console.log(`已打开连接数: ${openConnCount}`); await client.close(); } queryOpenConnections().catch(console.error);
补充:服务器端全局连接查看
如果你需要查看MongoDB服务器的全局连接情况(非特定客户端),可以执行服务器状态命令:
// 在Mongo Shell中执行 db.serverStatus().connections
返回结果中的current字段表示当前服务器的总活跃连接数。
内容的提问来源于stack exchange,提问作者Sandil Ranasinghe
相关产品推荐
相关产品推荐

