未释放资源的教训,开发MongoDB连接一定要关闭连接

2023-11-06

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

 

但遇到奇怪的现象。

 

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

要重启mongodb服务器才好转。

 

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

 

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

 

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

 

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

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

 

但都没能解决问题

 

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

 

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

 


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

 

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

 

结果问题不再出现。

 

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

 

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

 

转载于:https://www.cnblogs.com/zihunqingxin/p/4049014.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 识别包含本机方法实现的库文件/源

    如何识别包含本机方法实现的库文件 Ex public native String intern 我在哪里可以找到实施 source code of String intern 方法 找到了答案String intern 与快速谷歌搜索 ht
  • Linux C++ 调试器

    我正在寻找完美的 Linux C 调试器 我不期望成功 但搜索应该提供丰富的信息 我是一个非常有能力的 gdb 用户 但 STL 和 Boost 很容易压垮我的调试技能 并不是说我无法深入了解数据结构的内部结构 而是它需要很长时间 我通常会
  • Finalize() 何时执行? [复制]

    这个问题在这里已经有答案了 在一次采访中我被问到 假设 JVM 在 A 类对象未被使用时运行 gc class A some code here protected void finalize code here 它是否保证finalize
  • Excel 2007 中的数值 - 底层 xml 文件中的表示与存储

    这个问题与 NET和OpenXml有关 我已经阅读了以下文章 它有很好的解释 但没有回答我的问题 Excel 2007 中数值的可视化与底层 xml 文件不一致 https stackoverflow com questions 58594
  • Java Reflection:为什么这么慢?

    我一直避免使用 Java 反射 因为它速度缓慢 我在当前项目的设计中达到了一个点 能够使用它将使我的代码更具可读性和优雅性 所以我决定尝试一下 我只是对这种差异感到惊讶 我注意到有时运行时间几乎延长了 100 倍 即使在这个简单的例子中 它
  • 菜单项标题未显示

    菜单项的标题未显示在片段内 我在菜单文件中有两个项目 第一个是带有图标和标签的showAsAction always在工具栏中显示图标 第二个只有标题 我不知道这里出了什么问题 菜单项的所有操作均有效 例如下面 菜单 销售 xml menu
  • 如何显示 javadoc 代码块中的泛型?

    我有一个 javadoc 代码块 我想在其中编写一个包含泛型的代码示例 如下所示 public interface SomeInterface
  • 是否有理由为什么用 XmlInclude 修饰的基类在序列化时仍然会抛出类型未知的异常?

    我将简化代码以节省空间 但所提供的内容确实说明了核心问题 我有一个类 它的属性是基类型 有 3 个派生类可以分配给该属性 如果我将任何派生类分配给容器并尝试序列化容器 XmlSerializer 会抛出可怕的错误 类型 x 不是预期的 使用
  • Selenium - WebDriver.findElement() 和 WebElement.findElement() 之间的区别

    我正在使用WebElement findElement By cssSelector click 在页面上查找某个元素 但它返回了 Unable to locate element 但是当我使用WebDriver findElement B
  • 在 libgdx 中截取屏幕截图

    我有一个应用程序 我想在其中截取游戏屏幕的屏幕截图并将其保存为图像并上传到 Facebook 我正在使用 Libgdx 我的重点是 android 谁能帮助我如何以编程方式截取游戏屏幕并将其另存为图像 现在相当容易 Libgdx提供了一个例
  • Subsonic 3 ActiveRecord 嵌套选择导致 NotIn 错误?

    我有以下 Subsonic 3 0 查询 其中包含嵌套的 NotIn 查询 public List
  • SwingWorker 和 Executor 的区别

    我正在使用 SwingWorker 在我正在制作的应用程序上执行一些重负载任务 虽然今天我遇到了 Executor 类和这个例子 Executors newCachedThreadPool execute new Runnable publ
  • 在java中访问dll方法

    我正在尝试访问java中用c 编写的dll方法 从下面的代码我试图构建已成功生成的 dll using System using Microsoft Win32 namespace CyberoamWinHelper public clas
  • 矩阵行列式算法 C++

    我是编程新手 我一直在寻找一种找到矩阵行列式的方法 我在网上找到了这段代码 但我很难理解这里的算法 我对递归的基础没有问题 但继续和主循环我很难理解 非常感谢任何可以向我解释该算法的人 int determ int a MAX MAX in
  • PC 上 XNA 中的信箱和缩放

    有没有一种方法可以让我基本上以 1080p 或 720p 作为默认分辨率来开发 XNA 游戏 然后根据设置的分辨率将游戏中的所有内容缩放到适当的大小 而不必在每个 Sprite 中设置缩放因子Draw 方法 我的想法是 我可以基于 1080
  • 具有可导出私钥的证书的“错误密钥”例外

    我正在尝试使用非对称加密来加密然后解密文件 我已经使用 makecert 创建了一个测试证书并将其安装到我的个人本地计算机存储中 将来我必须在多个服务器上安装此证书 这就是为什么我使用 pe 标志创建它 即使用可导出的私钥 证书已成功创建并
  • 从不同的线程访问对象

    我有一个服务器类 它基本上等待来自客户端的连接 在该类中 我创建了一个 NetworkStream 对象 以便能够从客户端接收字节 由于 NetworkStream Read 方法不是异步的 这意味着它将等到从客户端读取字节才能继续执行类似
  • 如何从与 C# lambda 集成(而非代理集成)的 Amazon API 网关获取正确的 http 状态代码?

    我正在使用 C lambda 与 API 网关集成 我希望 API 网关返回正确的错误代码 例如 400 404 500 等 API网关模块tf文件 provider aws version lt 2 70 0 region var aws
  • GridLayout 中的 JLabel

    如何添加JLabel出于GridLayout 我有一个 8x8 网格布局 Container content getContentPane content setLayout new GridLayout 8 8 2 2 for int f
  • java中的“main”可以返回字符串吗?

    java中的public static void main String args 是否有可能返回String代替void 如果是 怎么办 public static String main String args 代替 public st

随机推荐

  • 【华为OD机试真题 Java】最大花费金额

    前言 本专栏将持续更新华为OD机试题目 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun09
  • ActivityOptions副屏启动

    ActivityOptions副屏启动 1 ActivityOptions 2 ActivityStarter转化为SafeActivityOptions 2 1 Request activityOptions 2 2 ActivityRe
  • 使用prompt在页面中弹出提示对话框

    根据用户输入星期一 星期日的不同 弹出不同信息提示对话框 要求使用函数实现
  • 【代码随想录】哈希表刷题

    哈希表 有效的字母异位词 赎金信 字母异位词分组 找到字符串中所有字母异位词 两个数组的交集 两个数组的交集II 快乐数 两数之和 四数相加 II 三数之和 四数之和 心得技巧 数据范围小 可以使用数组模拟哈希 想清楚什么作为哈希的 Key
  • VMware Workstation 15 安装教程

    哈喽 大家好 今天一起学习的是VMware Workstation 15的安装 vm虚拟机是小编非常喜欢的生产力软件 小编之前发布的测试教程钧在vm上进行的实验 VMware Workstation是一款功能强大的桌面虚拟计算机软件 它能够
  • python测试开发工具库汇总

    https github com china testing python api tesing blob master books md 有相关书籍下载 Web UI测试自动化 splinter web UI测试工具 基于selnium封
  • Step1-权限管理介绍

    一 相关操作界面 1 能实现角色级权限 RBAC 2 能实现功能级和数据级别权限 权限管理界面 角色管理界面 用户管理界面 角色和权限关系维护界面 用户和角色关系维护界面 主流开源权限管理框架有 Spring Security 和 Apac
  • Linux下安装配置Ftp服务器

    Linux环境中安装配置FTP服务 1 安装Vsftpd服务 1 查看Linux环境中是否已经存在安装的ftp 查看并显示安装的版本号 没有安装则不显示 rpm qa grep vsftpd 2 如果存在已经安装的Vsftpd服务 则先卸载
  • 素数判断(C语言)

    素数就是除了本身和1外 不能整除任何数 通过c语言来判断素数是很容易的 我们只需要做一个for循环就行了 让这个数对所有小于它的数求余数 如果余数都不为0 那就说明这是一个素数 逻辑整明白了 就上代码 如图 在这个程序里 我做了一个函数调用
  • MySQL的查询及删除重复记录

    查询及删除重复记录的方法 一 1 查找表中多余的重复记录 重复记录是根据单个字段 peopleId 来判断 select from people where peopleId in select peopleId from people g
  • vtk部分filter介绍

    vtkAdaptiveSubdivisionFilter 基于边缘和 或面积度量细分三角形 vtkAdaptiveSubdivisionFilter是一个基于最大边长和 或三角形区域细分三角形的滤镜 通过指定任何给定三角形可能具有的最大边长
  • 用生成器实现斐波那契数列。

    生成器 在 Python 中 使用了 yield 的函数被称为生成器 generator 跟普通函数不同的是 生成器是一个返回迭代器的函数 只能用于迭代操作 更简单点理解生成器就是一个迭代器 在调用生成器运行的过程中 每次遇到 yield
  • 在Pycharm中安装opencv出现pip无法更新等等问题

    问题背景 想在Pycharm上安装opencv进行双目视觉学习 出现了一系列问题 具体问题 1 pip无法更新到最新版本 ValueError Unable to find resource t64 exe in package pip v
  • 消息对话框--安卓练习3-5

    一 实验要求 在本例中设计了两种形式的对话框程序 一种是发出提示信息的普通对话框 一种是用户登录对话框 二 让我们先来看一下运行结果 方便我们清楚实验需求 三 源码分析 见注释 3 1 布局文件 activity main xml
  • 【LeetCode刷题】88、合并两个有序数组

    给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2 另有两个整数 m 和 n 分别表示 nums1 和 nums2 中的元素数目 请你 合并 nums2 到 nums1 中 使合并后的数组同样按 非递减顺序 排列 注意 最终
  • 【VulnHub系列】West-Wlid1.1

    实验信息 Kali 192 168 10 106 WestWild 192 168 104 实验过程 通过arp scan查找目标主机 确定目标主机IP192 168 10 104 sudo arp scan interface eth0
  • WebComponents.exe插件安装后依然提示安装插件解决问题方法

    使用海康威视的摄像头使用网页查看监控页面 提示需要安装插件 安装完成后打开网页查看依然提示安装插件 后来经过查询后发现安装插件后需要使用ie内核的浏览器打开才能加载此插件进行显示 解决方法就是使用ie内核如ie浏览器
  • 使用ulisesbocchio对spring-boot项目properties.yml(bootstrap.yml)配置文件加密

    Spring boot项目中properties文件中的密码明文上传到公开的远程仓库后 不安全 可以使用Ulisesbocchio对配置文件进行加密 1 添加maven依赖
  • Qt - 元对象系统 - 信号与槽_信号与槽连接(一对多)

    信号与槽 信号与槽连接 一对多 信号与槽的关联方式有如下特点 一个信号连接一个槽 connect sender SIGNAL single1 receiver SLOT slotFun 如 一个信号连接一个信号 connect sender
  • 未释放资源的教训,开发MongoDB连接一定要关闭连接

    废不少工夫将数据存储 全部迁移至mongodb 未作大量改动则是主因 但遇到奇怪的现象 程序跑起不久后 mongodb即假死 另起客户端想登陆mongodb都不成 要重启mongodb服务器才好转 分析原因是mongodb的连接池满掉且不释