首页 > 代码库 > 开发MongoDB连接一定要关闭连接,异常中也一定要关

开发MongoDB连接一定要关闭连接,异常中也一定要关

废不少工夫将数据存储,全部迁移至mongodb,未作大量改动则是主因。

 

但遇到奇怪的现象。

 

程序跑起不久后,mongodb即假死,另起客户端想登陆mongodb都不成。

要重启mongodb服务器才好转。

 

分析原因是mongodb的连接池满掉且不释放。

 

但从官网所了解的mongodb的连接是自行管理的,用完后自动释放,写几个demo测试,也完全符合这一点。

 

浪费了不少时间找这个问题的成因,并想办法作优化。

 

比如,设置windows的TCP连接数等等。

设置mongodb的连接数,等待时间等等。

 

但都没能解决问题

 

最后转念一想,mongodb的连接是自行管理的,有自已的连接池,但mongdb与我开发的程序之前,还有一个第三方,封装的MONGODB驱动。

 

想想驱动内部会不会作了什么事情,以致于连接被长久保持,不能归还?

 

抱着试一试的心态,重写了所有的项目代码,try{}catch{} 在catch中手动close释放连接。

 

结果问题不再出现。

 

原因很清楚了,就是因为异常。

 

mongodb的连接顺利的执行完任务,自动释放,但用该驱动,如果出异常的话,并不会主动关掉连接,以至程序运行一段时间后,连接池被透支。

开发MongoDB连接一定要关闭连接,异常中也一定要关