我把这个问题贴在这里只是为了确保我没有在错误的树上吠叫。
如何获得使用(和免费)到MongoDB的连接数,但从客户端的角度(例如Java客户端),使用4. x驱动程序?
有关于使用serverStatus的帖子(使用java获取mongoDB中打开的连接数),但它假定对mongoDB具有“admin”访问权限。使用“普通用户”(具有较低权限(例如仅访问一个数据库)的db用户)无法运行serverStatus()。但这只提供了服务器端的视图(有N个来自IP x的连接)。
其他帖子提到了如何设置连接池大小(例如,使用MongoClients.create(MongoClientSettings设置)
(请参阅4.x API参考(https://mongodb.github.io/mongo-java-driver/4.0/apidocs/mongodb-driver-sync/com/mongodb/client/MongoClients.html)):
MongoCredential credential = MongoCredential.createCredential(
username,
"admin",
password.toCharArray());
MongoClient mongoClient = MongoClients.create(MongoClientSettings.builder()
.applyToClusterSettings(
builder -> builder.hosts(Arrays.asList(new ServerAddress(hostname, portNumber))))
.credential(credential)
.applyToConnectionPoolSettings(builder -> builder
.minSize(connectionPoolMinimumSize)
.maxSize(connectionPoolMaximumSize))
.readConcern(readConcern)
.readPreference(readPreference)
.writeConcern(writeConcern)
.build());
但没有一个提供了将已使用和可用的连接从连接池中获取的方法。
正如Oleg提到的,使用ConnectionPoolListener是一种方法,但这只在3. x驱动程序中可用。ConnectionPoolListener方法在4. x上被标记为已弃用(尽管在JMX监控部分(html" target="_blank">http://mongodb.github.io/mongo-java-driver/4.0/driver-reactive/reference/monitoring/)中仍然提到了它。
终于有了效果:
com.mongodb.event.ConnectionPoolListener
... public class CustomConnectionPoolListener implements ConnectionPoolListener {
...
}
@Override
public void connectionCreated(ConnectionCreatedEvent event) {
ConnectionPoolStatsPOJO cps = mongoConnectionPoolList.get(connectionPoolAlias);
cps.incrementConnectionsCreated();
mongoConnectionPoolList.put(connectionPoolAlias, cps);
}
ConnectionPoolListener customConnPoolListener = new CustomConnectionPoolListener(...); /* added some references in the */
...
MongoClientSettings mongoClientSettings = MongoClientSettings.builder()
.applicationName(applicationName)
.applyConnectionString(connURI)
.credential(credential)
.readConcern(readConcern)
.readPreference(readPreference)
.writeConcern(writeConcern)
.applyToConnectionPoolSettings(builder -> builder
.minSize(connectionPoolMinimumSize)
.maxSize(connectionPoolMaximumSize)
.addConnectionPoolListener(customConnPoolListener)
)
.retryWrites(true)
.retryReads(true)
.build();
...
MongoClient mongoClient = MongoClients.create(mongoClientSettings);
....
ConnectionPoolStatsPOJO connectionPoolStats = MongoDB_ConnectionPool_Repository.getInstance().getMongoConnectionPoolList().get(connectionPoolAlias);
因此,感谢“@D.SM”为我们指明了正确的方向。
您可以使用此处描述的连接池监视来跟踪连接状态,并推断您要查找的计数。
我不知道Java驱动程序是否将您正在寻找的计数器公开为公共API;许多驱动程序没有。
问题内容: 一切工作正常,但问题是当我在地图上定位时什么都没发生我注册了我的谷歌地图,我在这里做了所有说明 http://code.google.com/intl/pl/android/add-ons/google- apis/mapkey.html 我可以看到地图,可以放大和缩小,但是当我搜索位置时,会在logcat中找到它 这是我的Java代码 有什么帮助吗?提前致谢 问题答案: 如果您在AP
问题内容: 我想知道我们如何知道套接字(java)中服务器端客户端的IP地址。假设有一个服务器“ S”和两个客户端“ A”和“ B”。客户端A向我(服务器)发送一些信息,客户端B向我(服务器)发送一些其他信息。我必须将来自A和B的信息存储在不同表中的数据库中。如何区分客户端A和客户端B的请求? 问题答案: 每个套接字都有一个方法来返回与其连接的客户端的IP地址。
我们的用例是提出大量请求。每个请求返回1MB的数据。现在,在客户端,我们创建一个GRPC通道,并在循环中运行以下函数 我的问题是在python中如何创建grpc客户端连接池以获得更好的吞吐量? 在golang我看到了这个https://godoc.org/google.golang.org/api/option#WithGRPCConnectionPool但是我很难在python中找到文档。 py
我知道这是一个类似于:Spring Integration的问题。未知主机和tcp-connection-factory 但是,在我的特殊情况下,TCP-连接是基于si消息流建立的。我正在编写一个程序,“伪造”用户登录到一个特定的网站通过TCP/IP连接。主机/端口每周都会发生变化,所以我更喜欢动态设置连接。因此,目标服务器的那些主机/IP不是静态的。 我知道我的用例很少,但它在我特定的业务逻辑中
完整代码: 完整日志: 附加到dockerfolder_mongodb_1,dockerfolder_docker_flask_mongo_1 mongodb_1 2018-08-27t13:14:18.349+0000 I控件[initandlisten]MongoDB开始:pid=1 port=27017 dbpath=/data/db 64位主机=E086871a3aeb mongodb_1
当我用我的节点运行MongoDB连接时。js应用程序哪个游戏平台我在这里面临着越来越多的MongoDB连接的问题[不使用任何查询,但它不断增加],达到819,我的MongoDB复制服务器停止响应,间接应用程序停止工作。但是我想保持至少20个关于如何解决这些问题的联系,请帮助我。 ** Mongodb连接:const connectionString=mongodb://AAAA:PASSWORD@