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

但遇到奇怪的现象。

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

要重启mongodb服务器才好转。

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

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

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

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

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

但都没能解决问题

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

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

资源型引用都要在finally中释放,因为考虑到重用,所以并未在finally中释放资源

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

结果问题不再出现。

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

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

未释放资源的教训,开发MongoDB连接一定要关闭连接的更多相关文章

  1. Mybatis 打开连接池和关闭连接池性能对比

    1  创建数据库表 -- phpMyAdmin SQL Dump -- version 4.2.11 -- http://www.phpmyadmin.net -- -- Host: localhos ...

  2. MongoDB聚合查询及Python连接MongoDB操作

    今日内容概要 聚合查询 Python操作MongoDB 第三方可视化视图工具 今日内容详细 聚合查询 Python操作MongoDB 数据准备 from pymongo import MongoCli ...

  3. iOS 开发:TCP三次握手连接

    在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握 ...

  4. mongodb系列3 mongo mongoskin 连接以及连接数的问题进阶

    1)使用mongodb连接mongo var mongo = require('mongodb'), //引入mongodb dbHost = '127.0.0.1', dbPort = 27017; ...

  5. HslCommunication库的二次协议扩展,适配第三方通讯协议开发,基础框架支持长短连接模式

    本文将使用一个gitHub开源的项目来扩展实现二次协议的开发,该项目已经搭建好了基础层架构,并实现了三菱,西门子,欧姆龙,MODBUS-TCP的通讯示例,也可以参照这些示例开发其他的通讯协议,并Pul ...

  6. Windows10、ARM开发板、VMware虚拟机同时连接Internet

    前段时间有人遇到一些网络连接问题,让我帮忙处理,他想让ARM开发板连接外网,可以连接网络数据库,同时保证自己的电脑可以上网. 本来说直接可以连接一个路由器,分配一个内网IP给ARM就可以了,但是当时那 ...

  7. Fortify Audit Workbench 笔记 Unreleased Resource: Database( 未释放资源:数据库)

    Unreleased Resource: Database 未释放资源:数据库 Abstract 程序可能无法成功释放某一项系统资源. Explanation 程序可能无法成功释放某一项系统资源. 资 ...

  8. Objective-C ,ios,iphone开发基础:使用第三方库FMDB连接sqlite3 数据库,实现简单的登录

    第一步:下载第三方库,点击 连接 下载, 第二部:准备数据库:按照连接&中博客的步骤实现数据库, 数据库的设计大致如下表: id        username             pas ...

  9. TMS320F28335项目开发记录2_CCS与JTAG仿真器连接问题汇总

    CCS与仿真器连接问题 实际使用过程中.仿真器和CCS连接可能出现这样或那样的问题,或许你的连接非常成功,没碰到过什么问题.但我的问题的确不少,可能与电脑配置有关吧,也可能与人品有关吧. 以下的自己的 ...

随机推荐

  1. goweb-动作

    go-模板引擎 动作 Go 模板的动作就是一些嵌入到模板里面的命令,这些命令在模板中需要放到两个 大括号里{{ 动作 }},之前我们已经用过一个很重要的动作:点(.),它代表了传递给模 板的数据.下面 ...

  2. 清除input表单内容

    碰到几次情况,页面刷新或者从上级页面返回表单的内容依然遗留,很影响使用. <form action="" method="" autocomplete=& ...

  3. 字符串中子序列出现次数(dp)

    躲藏 链接:https://ac.nowcoder.com/acm/problem/15669来源:牛客网 题目描述 XHRlyb和她的小伙伴Cwbc在玩捉迷藏游戏. Cwbc藏在多个不区分大小写的字 ...

  4. HDU-4460 Friend Chains(BFS&权为1所有最短路的最大值)

    题目: For a group of people, there is an idea that everyone is equals to or less than 6 steps away fro ...

  5. 17.3.12--urllib2模块

    1---urllib2是非常强大的Python网络资源访问模块,它的功能和urllib模块相似 python标准库中的urllib2模块可以说是urlib模块的一个升级的复杂版,不需要另外下载, 比如 ...

  6. UML-类图-关键字如何使用?

    部分预定义UML关键字: 例如: 加上关键字,明确,清晰.

  7. build模式入门,build模式理解(转载)

    问:为何要用? 普通做法: 1.创建pojo public class Person { private String name; private int age; private double he ...

  8. css 传数据套路

    <input type=hidden> 那么该标签就不会显示 但是我们可以用这个标签储存数据 这是一个利用标签元素隐藏

  9. python模块——datetime

    datetime模块是python自带对时间的操作,其常用的四大类分别是date.time.datetime.timedelta.下面分别讲解下这四大类中常用的方法及其属性. date类 date类的 ...

  10. QLIKVIEW-SALESORDER\DELIVERYNOTICE\OUTSTOCK\INVOICE

    //销售订单SALESORDER_TMP:NoConcatenateLOAD T_SAL_ORDER.LE_ID, [T_SAL_ORDER.LCY CODE], T_SAL_ORDER.SYSTEM ...