码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2014-10-24 20:31:12      阅读:335      评论:0      收藏:0      [点我收藏+]

标签:os   sp   数据   on   问题   代码   bs   时间   管理   

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

 

但遇到奇怪的现象。

 

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

要重启mongodb服务器才好转。

 

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

 

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

 

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

 

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

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

 

但都没能解决问题

 

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

 

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

 

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

 

结果问题不再出现。

 

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

 

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

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

标签:os   sp   数据   on   问题   代码   bs   时间   管理   

原文地址:http://www.cnblogs.com/zihunqingxin/p/4049014.html

(1)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!