如何使用Java驱动程序检查MongoDB的活动连接状态

3

当调用REST服务时,我需要发布(到Graphite)Mongo db实例的“可用活动连接数”状态。我知道我们可以使用db.serverStatus()来了解服务器端连接的详细信息。我希望使用JAVA API在客户端获取“可用活动连接数”信息。 MongoDB Java驱动程序API文档对此没有太多帮助。


请按照此解决方案操作 = https://dev59.com/amQm5IYBdhLWcg3w-i9L#39294943 - Md Samiul Alim Sakib
2个回答

8

假设您正在使用3.0.x驱动程序,并连接到默认端口的本地主机:

MongoClient mongoClient = new MongoClient();
MongoDatabase database = mongoClient.getDatabase("admin");
Document serverStatus = database.runCommand(new Document("serverStatus", 1));
Map connections = (Map) serverStatus.get("connections");
Integer current = (Integer) connections.get("current");

完美的,谢谢。感谢你,@imakarsh。 - Paul C
但是您可以在Mongo服务器端获取所有连接,而不是客户端...我说得对吗? - OhadR
感谢@ori...在他的问题中问到:“我想在客户端获取'可用活动连接数'信息”,所以我有些困惑... - OhadR
谢谢。我更喜欢使用MongoTemplate和org.bson.Document而不是java.util.Map。 Document serverStatus = mongoTemplate.getDb().runCommand(new Document("serverStatus", 1)); return serverStatus.get("connections", Document.class).getInteger("current").doubleValue(); - Olivier Tonglet

0

db.serverStatus() 提供有关已创建连接数和可用连接数的信息。类似以下内容:

    "connections" : {
    "current" : 3,
    "available" : 2045,
    "totalCreated" : NumberLong(3)
}

你也可以使用 db.currentOp(true) 来获取正在进行的详细信息。

http://docs.mongodb.org/manual/reference/method/db.currentOp/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接