Java 如何解决mongodb客户端在120000毫秒后等待池项目的超时异常无错误

Java 如何解决mongodb客户端在120000毫秒后等待池项目的超时异常无错误,java,multithreading,mongodb,connection-pooling,mongodb-java,Java,Multithreading,Mongodb,Connection Pooling,Mongodb Java,我有一个Java类(不是JavaSpring或server),它 1) 将文档插入到一个表中, 2) 从其他表中读取文档, 3) 将文档插入到另一个表并 4) 从另一个表中删除文档 以上4个操作都发生在3个表中 我得到以下错误 Exception in thread "pool-1-thread-240" com.mongodb.MongoTimeoutException: Timeout waiting for a pooled item after 120000 MILLISECONDS a

我有一个Java类(不是JavaSpring或server),它 1) 将文档插入到一个表中, 2) 从其他表中读取文档, 3) 将文档插入到另一个表并 4) 从另一个表中删除文档

以上4个操作都发生在3个表中

我得到以下错误

Exception in thread "pool-1-thread-240" com.mongodb.MongoTimeoutException: Timeout waiting for a pooled item after 120000 MILLISECONDS
at com.mongodb.ConcurrentPool.get(ConcurrentPool.java:113)
at com.mongodb.PooledConnectionProvider.get(PooledConnectionProvider.java:75)
at com.mongodb.DefaultServer.getConnection(DefaultServer.java:73)
at com.mongodb.BaseCluster$WrappedServer.getConnection(BaseCluster.java:221)
at com.mongodb.DBTCPConnector$MyPort.getConnection(DBTCPConnector.java:508)
at com.mongodb.DBTCPConnector$MyPort.get(DBTCPConnector.java:456)
at com.mongodb.DBTCPConnector.getPrimaryPort(DBTCPConnector.java:414)
at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:176)
at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:159)
at com.mongodb.DBCollection.insert(DBCollection.java:93)
at com.mongodb.DBCollection.insert(DBCollection.java:78)
at com.mongodb.DBCollection.insert(DBCollection.java:120)
at MyProgram$MyClass.run(MyProgram.java:149)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:695)
a) 我怎样才能修好它? 我正在Mac OS系统中使用mongod 2.6.3。 b) 我应该增加客户端的mongodb池吗。 c) 如果是,我应该怎么做? d) 我可以设置的最大值是多少


我在java代码中执行插入操作时遇到了这个问题。

对于单个MongoDB实例,默认池连接数是100,最大池大小是20

为了解决您的问题,请考虑这一点