mongodb,java&连接没有关闭

时间:2013-01-30 18:45:29

标签: java mongodb connection

因为有一段时间我遇到了一个奇怪的问题:

我有一个带有Mongo()singelton的spring 3 webapp,它由spring IoC容器实现。 Mongo类正确地获得@Autowired,我可以发出查询,更新等。

一段时间后,我在DBPortPool上遇到有关超时发出连接的异常。

为了解决问题,我编写了一个将池统计信息转储到日志文件的作业。

几个小时后,我得到了这个输出:

Total  : 38
Used   : 8
Unused : 30
Detailed Usage: 
        Duration: 0, Namespace: null, No Documents 0, ThreadName: null, Class: class com.mongodb.InUseConnectionBean, OpCode: null, Query: null
Detailed Usage: 
        Duration: 0, Namespace: null, No Documents 0, ThreadName: null, Class: class com.mongodb.InUseConnectionBean, OpCode: null, Query: null
Detailed Usage: 
        Duration: 0, Namespace: null, No Documents 0, ThreadName: null, Class: class com.mongodb.InUseConnectionBean, OpCode: null, Query: null
Detailed Usage: 
        Duration: 0, Namespace: null, No Documents 0, ThreadName: null, Class: class com.mongodb.InUseConnectionBean, OpCode: null, Query: null
Detailed Usage: 
        Duration: 0, Namespace: null, No Documents 0, ThreadName: null, Class: class com.mongodb.InUseConnectionBean, OpCode: null, Query: null
Detailed Usage: 
        Duration: 0, Namespace: null, No Documents 0, ThreadName: null, Class: class com.mongodb.InUseConnectionBean, OpCode: null, Query: null
Detailed Usage: 
        Duration: 0, Namespace: null, No Documents 0, ThreadName: null, Class: class com.mongodb.InUseConnectionBean, OpCode: null, Query: null
Detailed Usage: 
        Duration: 0, Namespace: null, No Documents 0, ThreadName: null, Class: class com.mongodb.InUseConnectionBean, OpCode: null, Query: null

基本上,我只打印ConnectionPoolStatisticsBean类的所有属性。

现在,令人困惑的是:通常,那些变量Duration,Namespace,ThreadName,Class和Query正在填充数据。不,这些联系似乎没有被释放。

不幸的是,到目前为止我无法重现此错误。

任何提示我如何找出这些连接被卡住的地方?

谢谢大家的帮助!

//编辑:

我确实使用:

DBCollection col = mongo.getDB(this.db).getCollection(“collection”); col.insert(...)

我没有发出db.requestStart();或者db.requestDone()。

0 个答案:

没有答案