我的 java 代码使用 com.mongodb.DB 的单个实例连接到 mongo DB。现在我使用这个数据库实例来跨越 500 个对我的数据库执行命令的线程。所有这些都同时并行运行。以下是配置参数:
autoConnectRetry = true;
connectionsPerHost=50;
threadsAllowedToBlockForConnectionMultiplier=800;
connectTimeout=20000;
socketTimeout=60000;
maxWaitTime=2000;
现在,如果我使用“db.serverStatus().connections”检查我的数据库,我会得到以下结果:“current”:52,“available”:19999,“totalCreated”:NumberLong(3681)....我...
我已经编写了这样的代码,即使在所有线程都完成后,我的主类仍然在循环中运行,因此我的 JVM 仍然处于启动状态。但我看到,在我停止我的 JVM 之前,所有这 52 个连接仍然处于活动状态。现在我再次执行相同的程序,他又占用了 50 个。一旦对 db 的执行结束,我怎样才能释放连接。是否非常有必要停止 JVM 以释放它们。此外,我认为 close() 不是调用每个线程的好选择,因为我必须从头开始为每个线程创建一个连接..
如果这是我的基于应用服务器的应用程序,那么数字可能永远不会减少,因为 JVM 不会在 db 调用后停止。
请帮忙..