c3p0如何关闭所有数据库连接并在需要时重新打开它们?

2024-03-27

我有一个 TimerTask 每天运行一次(大约 1 或 2 小时)。每次运行时,它都会创建数百个线程来为 MySQL 数据库中的每个表执行一些计算工作。我使用c3p0作为数据库源连接池(每个线程在计算前获取连接,计算后关闭连接)。我设置连接池配置如下,

cpDs = new ComboPooledDataSource();
cpDs.setMinPoolSize(10);
cpDs.setMaxPoolSize(20);
cpDs.setMaxStatementsPerConnection(10);

在测试过程中,我发现第二天运行时数据库连接全部丢失,并且日志文件中出现大量“底层异常导致通信链路失败”的信息。所以我添加了以下配置以便在使用之前测试连接。

// 7 hours, less than MYSQL default value - 8 hours
cpDs.setMaxIdleTime(25200);
cpDs.setTestConnectionOnCheckout(true);
cpDs.setPreferredTestQuery("select 1");

但我观察到,当 TimerTask 未运行时,总是有 10 个连接保持睡眠/空闲状态(通过 SQL 'show processlist;'),并且我经常看到著名的“明显死锁!!!”警告(该错误在 c3p0 项目中仍处于打开状态).

那么有没有办法在所有计算工作完成后关闭所有连接,并在第二天再次执行任务时重新构建连接呢?谢谢。

问候, 乔伊


如果您希望关闭所有连接,请设置minPoolSize and initialPoolSize到 0。此外,我建议减少maxIdleTime为更小的值,如 600(10 分钟)。这种设置组合将使池在您的工作人员完成后快速“耗尽”。

您还可以使用其中之一强制关闭所有连接reset中暴露的方法ComboPooledDataSource,但如果池配置正确,则没有必要。

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

c3p0如何关闭所有数据库连接并在需要时重新打开它们? 的相关文章

  • 按下按钮并在java中的新窗口中打开文件

    我创建了一个 JFrame 并放置了一个文本字段和按钮 在文本字段中我放置了从文本文件读取的名称 我知道我想单击按钮并打开一个已知窗口 我想在其中放置名称 其他信息来自同一个文件 这是我的代码 这是我的主框架 package Fronten
  • 垃圾收集器如何在幕后工作来收集死对象?

    我正在阅读有关垃圾收集的内容 众所周知 垃圾收集会收集死亡对象并回收内存 我的问题是 Collector 如何知道任何对象已死亡 它使用什么数据结构来跟踪活动对象 我正在研究这个问题 我发现GC实际上会跟踪活动对象 并标记它们 每个未标记的
  • Android:文本淡入和淡出

    我已阅读此 stackoverflow 问题和答案 并尝试实现文本淡入和淡出 Android中如何让文字淡入淡出 https stackoverflow com questions 8627211 how to make text fade
  • 什么是抽象类? [复制]

    这个问题在这里已经有答案了 当我了解抽象类时 我说 WT H 问题 创建一个无法实例化的类有什么意义呢 为什么有人想要这样的课程 什么情况下需要抽象类 如果你明白我的意思 最常见的是用作基类或接口 某些语言有单独的interface构建 有
  • 如何在 JPQL 或 HQL 中进行限制查询?

    在 Hibernate 3 中 有没有办法在 HQL 中执行相当于以下 MySQL 限制的操作 select from a table order by a table column desc limit 0 20 如果可能的话 我不想使用
  • Jframe 内有 2 个 Jdialogs 的 setModal 问题

    当我设置第一个选项时 我遇到了问题JDialog模态 第二个非模态 这是我正在尝试实现的功能 单击 测试对话框 按钮 一个JDialog有名字自定义对话框 主要的将会打开 如果单击 是 选项自定义对话框主 其他JDialog named 自
  • 断言 Kafka 发送有效

    我正在使用 Spring Boot 编写一个应用程序 因此要写信给 Kafka 我这样做 Autowired private KafkaTemplate
  • 如何检查某个元素是否存在于一组项目中?

    In an ifJava中的语句如何检查一个对象是否存在于一组项目中 例如 在这种情况下 我需要验证水果是苹果 橙子还是香蕉 if fruitname in APPLE ORANGES GRAPES Do something 这是一件非常微
  • Java 中如何将 char 转换为 int? [复制]

    这个问题在这里已经有答案了 我是Java编程新手 我有例如 char x 9 我需要得到撇号中的数字 即数字 9 本身 我尝试执行以下操作 char x 9 int y int x 但没有成功 那么我应该怎么做才能得到撇号中的数字呢 ASC
  • Sun 在 EDT 之外做 GUI 工作的演示?

    我正在看SplashDemo java http download oracle com javase tutorial uiswing examples misc SplashDemoProject src misc SplashDemo
  • 如何使用 JMagick 转换色彩空间?

    如何使用 JMagick API 转换色彩空间 例如 CMYK gt RGB 和 RGB gt CMYK None
  • 提高 PostgreSQL 1 亿数据左连接查询性能

    我在用Postgresql 9 2 version Windows 7 64 bit RAM 6GB 这是一个Java企业项目 我必须在我的页面中显示订单相关信息 有三个表通过左连接连接在一起 Tables TV HD 389772 行 T
  • 蓝牙发送和接收文本数据

    我是 Android 开发新手 我想制作一个使用蓝牙发送和接收文本的应用程序 我得到了有关发送文本的所有内容逻辑工作 但是当我尝试在手机中测试它时 我看不到界面 这是Main Activity Code import android sup
  • 不可变的最终变量应该始终是静态的吗? [复制]

    这个问题在这里已经有答案了 在java中 如果一个变量是不可变的并且是final的 那么它应该是一个静态类变量吗 我问这个问题是因为每次类的实例使用它时创建一个新对象似乎很浪费 因为无论如何它总是相同的 Example 每次调用方法时都会创
  • 使用 HtmlUnit 定位弹出窗口

    我正在构建一个登录网站并抓取一些数据的程序 登录表单是一个弹出窗口 所以我需要访问这个www betexplorer com网站 在页面的右上角有一个登录链接 写着 登录 我单击该链接 然后出现登录弹出表单 我能够找到顶部的登录链接 但找不
  • 将 JScrollPane 添加到 JFrame

    我有一个关于向 Java 框架添加组件的问题 我有一个带有两个按钮的 JPanel 和一个添加了 JTable 的 JScrollPane 我想将这两个添加到 JFrame 中 我可以将 JPanel 添加到 JFrame 或将 JScro
  • Hibernate 本机查询 - char(3) 列

    我在 Oracle 中有一个表 其中列 SC CUR CODE 是 CHAR 3 当我做 Query q2 em createNativeQuery select sc cur code sc amount from sector cost
  • 在java中以原子方式获取多个锁

    我有以下代码 注意 为了可读性 我尽可能简化了代码 如果我忘记了任何关键部分 请告诉我 public class User private Relations relations public User relations new Rela
  • java XMLSerializer 避免复杂的空元素

    我有这个代码 DocumentBuilderFactory factory DocumentBuilderFactory newInstance DocumentBuilder builder factory newDocumentBuil
  • java'assert'和'if(){}else exit;'之间的区别

    java和java有什么区别assert and if else exit 我可以用吗if else exit代替assert 也许有点谷歌 您应该记住的主要事情是 if else 语句应该用于程序流程控制 而assert 关键字应该仅用于

随机推荐

  • 如何将模型数据从一个控制器传递到另一个控制器

    将模型数据从一个控制器传递到另一个控制器是否可能 我想将模型数据从一个控制器传递到另一个控制器 HttpPost public ActionResult Personal StudentModel student return Redire
  • MATLAB中如何将图像分成块?

    我有一个 256x256 的图像 我想将其分为 4 个 128x128 的块 并将它们寻址为 A1 到 A4 现在我想分别调用它们并对它们进行一些操作 我知道这可以使用blkproc功能 但具体是怎样的呢 我打电话吗blkproc像这样 B
  • 将 Watch 应用程序启动到中间视图

    基本上 我的应用程序以页面格式布局 我希望它启动到三个页面的中间 无法设置上一页的转场 所以我一直在尝试用代码来做到这一点 我将主视图设置为第一个视图 并且我尝试了多种方法来在应用程序启动后立即切换到中间视图 这是我尝试过的两种方法 if
  • R 保留数据框中每个日期的前 10 行

    我有一个按日期排序的股票数据数据集 然后按该日期的回报率从最大到最小排序 每天大约有800只股票 我如何创建一个新的数据框架 其中仅包含每天收益最高的 10 只股票 所以我需要每个日期的前 10 名 其他的我不关心 dplyr 是你的朋友
  • 如何使用 Twilio Java SDK 发送批量短信?

    我找到了大量关于如何使用 Js Python PHP SDK 发送大量短信的信息 但没有任何关于如何使用 Js Python PHP SDK 发送大量短信的信息如何使用 Java 实现这一点 以下是演示 Python 实现的代码片段 fro
  • 一段时间后 Adb 停止检测我的手机

    我正在 Linux 机器上为 android 开发 并且我已经创建了一个udevandroid 规则并且它有效 一段时间后 如果我拔掉设备并再次插入 adb如果我运行则无法识别该设备lusb or dmesg获取有关设备的信息 我尝试重新加
  • EA Sparx 查询中的WITH 子句

    是否可以在 EA Sparx 查询中使用WITH 子句 我写了这个 with Activities as select t connector start object id as Object2 id t object from t ob
  • 如何启用 python repl 自动完成并仍然允许新行选项卡

    我目前有以下内容 pythonrc在 python repl 中启用自动完成 Autocompletion import rlcompleter readline readline parse and bind tab complete 然
  • ASP.NET 中的会话超时

    我正在 IIS 6 0 中运行 ASP NET 2 0 应用程序 我希望会话超时为 60 分钟 而不是默认的 20 分钟 我做了以下事情 Set
  • 如何计算张量流中张量 A 沿张量 B 指定的权重的轴的加权平均值?

    我正在尝试对 RNN 输出应用加权平均方案 RNN输出用张量表示A有维度 a b c 我可以简单地采取tf reduce mean A axis 1 得到张量C有维度 a c 但是 我想做张量的 加权平均值 A along axis 1 权
  • 使用 Emacs 或 VIM 的 Colemak 键盘 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我一直在待办事项清单上划掉一些事情 我最近拿起了 Colemak 接下来我想学习Vim或Emacs 我倾向于 Vim 但它的好处之一是坚持主行 有了
  • Android 5-5.1 (API 21-22) 上的 WebView 崩溃 Resources$NotFoundException: 字符串资源 ID #0x2040002

    我正在将 Android 应用程序从 API 27 更新到 API 29 我注意到在尝试在基于 5 0 和 或 5 1 的模拟器上渲染 WebView 时发生崩溃 在运行 6 0 或更高版本 API 23 29 的模拟器上不会发生此问题 我
  • 如何实现和维护多个actionListener

    好的 我有一个类 我们称之为 MenuBarClass 其中包含多个 Menu 和 MenuItem 我想为每个 MenuItem 分配一个动作侦听器 但是 而不是执行以下操作 menuitem 1 addActionListener ne
  • 包内初始化订单

    我有文件 main a go b go c go a go package main import fmt func init fmt Println a func main b go package main import fmt fun
  • 如何在mininet中将不同的交换机连接到不同的遥控器?

    我想将 mininet 虚拟网络的不同交换机连接到不同的远程控制器 但不知道如何继续 请提供任何方法来做到这一点 任何 python 示例都值得赞赏 我推荐你阅读此邮件形式为 mininet 的邮件列表档案 https mailman st
  • 单实例登录实现

    我在我的项目 在 ASP NET 2 0 中构建的 Web 应用程序 中遇到了一个严重的问题 如下所述 假设我已经给出了用户 ID singh nirajan 并且用户说 User1 使用该用户 ID 登录到系统 现在我的要求是每当其他用户
  • javascript 将 int 转换为 float

    我有一个变量 var fval 4 现在我想输出为 4 00 JavaScript 只有一个Number存储浮点值的类型 没有 int Edit 如果要将数字格式化为小数点后两位数字的字符串 请使用 4 toFixed 2
  • 如何使用 Jackson 将字符串反序列化为自定义对象?

    我有一个想要解析的 JSON name john 我必须使用以下层次结构 这些类是不可变的 我必须通过静态工厂方法访问它们 这是必要的 因此建议对其中任何一个进行修改都是没有意义的Name or Person class Name stat
  • 如何添加 CSS3 过渡并显示 HTML5 详细信息/摘要标签?

    仅使用CSS3 有没有一种方法可以在页面上添加漂亮的淡入和从左滑动过渡效果DETAILS SUMMARY reveal 有关此新标签的演示 请参阅此演示 details transition height 3s ease in
  • c3p0如何关闭所有数据库连接并在需要时重新打开它们?

    我有一个 TimerTask 每天运行一次 大约 1 或 2 小时 每次运行时 它都会创建数百个线程来为 MySQL 数据库中的每个表执行一些计算工作 我使用c3p0作为数据库源连接池 每个线程在计算前获取连接 计算后关闭连接 我设置连接池