Hibernate c3p0 连接池未超时空闲连接

2024-02-06

我们有一个 java 服务器连接到 MySQL 5 数据库,使用 Hibernate 作为持久层,该持久层使用 c3p0 进行数据库连接池。

我尝试遵循 c3p0 和 hibernate 文档:

  • Hibernate - 如何配置 c3p0 连接池 https://www.hibernate.org/214.html
  • C3P0 Hibernate properties http://www.mchange.com/projects/c3p0/index.html#hibernate-specific
    • C3P0.properties配置 http://www.mchange.com/projects/c3p0/index.html#configuration_properties

我们的生产服务器上收到一个错误,指出:

...造成的原因: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: 连接后不允许进行任何操作 已关闭。连接是隐式的 由于底层原因而关闭 异常/错误:

开始嵌套异常

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException

MESSAGE:最后一个数据包成功 从服务器收到的是45000 几秒钟前发送的最后一个数据包 成功到服务器是45000 几秒前,比 服务器配置的值 '等待超时'。你应该考虑 即将到期和/或正在测试 在您使用之前的连接有效性 应用程序,增加服务器 客户端超时的配置值, 或使用连接器/J 连接 避免使用属性“autoReconnect=true” 这个问题。

堆栈跟踪:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 最后一个数据包成功接收 来自服务器的时间为 45000 秒 前.最后一个数据包发送成功 到服务器的时间是 45000 秒前, 比服务器长 “wait_timeout”的配置值。 您应该考虑过期 和/或测试连接有效性 在您的应用程序中使用之前, 增加服务器配置 客户端超时值,或使用 Connector/J 连接属性 'autoReconnect=true' 以避免这种情况 问题。

我们的 c3p0 连接池属性设置如下:

hibernate.c3p0.max_size=10
hibernate.c3p0.min_size=1
hibernate.c3p0.timeout=5000
hibernate.c3p0.idle_test_period=300
hibernate.c3p0.max_statements=100
hibernate.c3p0.acquire_increment=2

The 默认 MySQL wait_timeout http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_wait_timeout设置为 28800 秒(8 小时),报告的错误是说已经超过 45000 秒(约 12.5 小时)。尽管 c3p0 配置声明它将“超时”5000 秒后未使用的空闲连接,并且每 300 秒检查一次,因此空闲连接的生存时间不应超过 5299 秒,对吗?

我通过设置我的开发人员 MySQL(Windows 上的 my.ini,Unix 上的 my.cnf)wait_timeout=60 并将 c3p0 空闲超时值降低到 60 秒以下进行了本地测试,它将正确超时空闲连接并创建新的连接。我还检查以确保我们没有泄漏数据库连接并保留连接,而且看起来我们没有这样做。

这是我在开发人员环境中用于测试的 c3p0.properties 文件,以确保 c3p0 正确处理连接。

hibernate.properties(使用 MySQL wait_timeout=60 进行测试)

hibernate.c3p0.max_size=10
hibernate.c3p0.min_size=1
hibernate.c3p0.timeout=20
hibernate.c3p0.max_statements=100
hibernate.c3p0.idle_test_period=5
hibernate.c3p0.acquire_increment=2

c3p0.属性

com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL=ALL
com.mchange.v2.log.MLog=com.mchange.v2.log.FallbackMLog
c3p0.debugUnreturnedConnectionStackTraces=true
c3p0.unreturnedConnectionTimeout=10

通过检查日志确保 c3p0 确实正在启动。由于某种原因,我的类路径上有两个版本的 hibernate(hibernate-core3.3.1.jar 和 hibernate-3.2.6GA.jar)。我还使用了 hibernate 注释版本 3.4.0GA,它与 3.2.x 不兼容。 (不知道这是否与原来的问题有关)。 删除其中一个 hibernate jar 后(不记得我删除了哪个,可能是 hibernate-3.2.6GA.jar),c3p0 终于启动了,我摆脱了 8 小时不活动后发生的烦人的 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException 。

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

Hibernate c3p0 连接池未超时空闲连接 的相关文章

  • 每次都在django查询数据库中过滤查询集吗?

    想象一下我有以下代码 qs Users objects all list for i in range 10 list append qs filter age i 这里过滤器被调用 10 次 它是连接到数据库 10 次还是第一次使用过滤器
  • 如何更改 Hibernate CharacterTypeDescriptor 以处理空列值

    我们的问题是我们无法获取数据 其中包括empty长度为 0 的字符串 来自旧数据库 由于StringIndexOutOfBoundsExceptiion源自Hibernate的CharacterTypeDescriptor 我们希望更改 H
  • JPA 乐观锁与同步 Java 方法

    使用 JPA 乐观锁定 我们可以通过 Version 字段控制数据库表是否已被另一个事务同时更新 从而允许在数据库中存储可靠的数据 如果一个Java应用程序只有一个CRUD服务负责数据库中的特定实体 我们也可以同步其方法并管理信息在数据库中
  • DB2 Express 的默认用户名和密码

    我已在本地 Windows 计算机上安装了 Db2 Express 谁能告诉我默认的管理员凭据是什么 我尝试过以下组合 什么都不起作用 用户名 db2admin 密码 db2admin 用户名 db2admin 密码 密码123 应该是您本
  • 是否可以更新 amazon dynamodb 中的哈希键?

    我想更新 amazon dynamodb 表中的哈希键值 我在同一张表中也有一个范围键 是否有可能做到这一点 您无法更新哈希键值 您必须删除并重新创建该项目 这是相关的aws文档http docs aws amazon com amazon
  • Delphi XE5 FireDAC 错误:无法加载供应商库 [libmysql.dll 或 libmysqld.dll]

    我在 Windows 7 64 位上使用 Delphi XE5 只是尝试 FireDAC 组件 我正在使用一个 TFDConnection 组件连接到本地 MySQL 数据库 v5 6 15 我已经将 libmysql dll 32位 v5
  • 如何从连接字符串中提取数据库名称,而不考虑 RDBMS?

    我正在研究一个不知道正在使用的 RDBMS 的课程 当然 应用程序的其余部分都清楚这一点 连接字符串是此类的输入 我需要数据库名称 无论 RDBMS 如何 如何从连接字符串中提取数据库名称 我读到以下问题 如何使用 SqlConnectio
  • JpaRepository 上的@Transactional

    我正在使用只读数据库将一些数据输入到我的项目中 我们使用带有 jpa 和 hibernate 的 Spring v3 以下注释是否会使对我的存储库的所有调用成为只读事务 或者我是否需要调用存储库的服务层上的注释 package com bl
  • 无法从 Web 主机本身以外的任何地方连接到任何 Web 主机的 MySQL 数据库

    我有 2 个不同的虚拟主机 pagodabox 000webhost 都是免费的 并且我已经设置了localhost与MySQL 我已经在他们三个上安装了 wordpress 它们在自己的域中工作得很好 即 什么时候localhostwor
  • 无法获取 ConfigBean 中实体的正确 ID - Java EE

    我正在构建一个药房管理应用程序 每个药房都需要一名管理员 约束是这样的 public class Pharmacy implements Serializable Id GeneratedValue strategy GenerationT
  • 如何将变量设置为触发器 MYSQL 内存储过程的结果?

    我这里有一个小问题 我正在为我的数据库工作创建一个触发器 但我不知道如何在触发器内使用存储过程 我想将过程的结果保存在变量中 然后使用稍后在 IF 比较器上变量 这是我的代码 DELIMITER CREATE TRIGGER insert
  • 使用 Grails GORM 从旧数据库中的 char 字段中去除尾随空格

    映射时去除尾随空格的可能解决方案有哪些char遗留数据库中的字段 我看到以下选项 Calling trim 在使用时 控制器 视图等 重写属性访问器以返回 trim 使用 Hibernate UserType 修剪空格 我倾向于重写属性访问
  • 如何在 Hibernate 中使用 Oracle 查询提示

    我试图在 Hibernate 中使用 Oracle 提示来调用强制索引 但在 Hibernate 3 6 10 Final 中没有找到任何合适的 API 我以某种方式尝试了 Hibernate 标准中的预测 proList add Proj
  • 使用 Hibernate 和 Apache DBCP 的 MySQL 连接池问题

    看来我的应用程序有问题 当应用程序在启动后闲置很长时间 我不确定确切的时间 时 我会在日志中收到以下错误消息 我使用 Spring Hibernate MySQL 和 ApacheDBCP 进行连接池 ERROR org hibernate
  • 从多个表中选择 - 一对多关系

    我有这样的表 表产品 身份证 姓名 表格图像 产品 ID 网址 订单号 表价 产品 ID 组合 货币 价格 表数量 产品 ID 组合 数量 表 Product 与其他表是一对多关系 我需要查询表并得到类似这样的结果 伪数组 ProductI
  • 为什么 sql 字段名称中不应该包含逗号?

    人们一直告诉我列名中不应包含空格 我只是想知道 这是为什么 这是我为学校创建的一些数据库表遇到的问题 字段名称包括 Preble 和 Darke 相反 它们需要是 普雷布尔县 俄亥俄州 和 达克县 俄亥俄州 如果它们是行名称 我只需创建一个
  • JPA EntityManagerHolder 无法使用 Spring 5.1 和 Hibernate 5.3 转换为 Hibernate SessionHolder

    在我们使用 Spring Boot 2 1 3 Spring Data Rest 3 1 5 Spring Data JPA 2 1 5 和 Hibernate 5 3 7 的项目中 我们正在使用 Spring Framework 5 1
  • SQLite同时读写

    我读过很多主题 但无法找到问题的答案 是否可以同时读写 我有后台线程更新一些数据 UI 需要存储在数据库中的一小部分数据 所以在UI线程中执行SELECT操作 但当更新正在进行时它会阻塞 结果 UI 冻结了几秒钟 有人在写入时成功从数据库读
  • Hibernate Envers:如何捕获谁删除了审计表中的实体

    我在用hibernate envers with spring 一切工作正常 除了当我删除一个实体时 它不会改变的值updated by and updated date在审计表内 它会在之后保存一个与之前完全相同的实体 仅复制 sprin
  • 如何将 Hibernate 5 安装到 Apache Karaf v4 中

    我已经安装了 Apache Karaf v4 03 并查询了 Hibernate 的可用功能列表 如下所示 不幸的是 我使用的是 Hibernate v5 hibernate 3 3 2 GA Uninstalled enterprise

随机推荐

  • 无法在 Eclipse 中的 JavaFX 项目中创建 FXML 文件

    操作系统 Ubuntu 14 04 IDE Eclipse Mars 1 版本 4 5 1 和场景构建器 2 I can t choose root element because as I understand it should be
  • 适用于 iOS 项目的 XCode 8 中的 CMake 和代码签名

    CMake 能够使用目标属性设置为 XCode set target properties app PROPERTIES XCODE ATTRIBUTE CODE SIGN IDENTITY PROPER IDENTIFIER XCode
  • 省略代码:条件属性和预处理指令之间有什么区别吗?

    我想知道两者之间有什么区别 define MYSYMBOL if MYSYMBOL public void foo endif and define MYSYMBOL Conditional MYSYMBOL public void foo
  • django安装问题[python]

    去年夏天我想学习 Web 开发 所以我安装了 Django 1 8 一个不稳定的版本 我是在没有pip的情况下安装的 我最近决定再试一次 但想使用稳定版本 1 7 1 并且为了简单起见想使用 pip 安装 我读到为了删除没有 pip 安装的
  • 计算机代数软件,用于最小化一组多项式中的运算次数

    我有多项式系统 相当简单的多项式表达式 但相当长 优化我的手牌 表达式按集合分组 在给定的集合中 多个变量中有共同的术语 我想知道是否有一个计算机代数系统 例如 Mathematica Matlab 或 sympy 可以优化多个具有常用项的
  • 如何在 centos 7 上链接 python3 以使用 openssl11/或最新版本的 openssl (1.1.1)

    我们想在centos 7中升级OpenSSL但没有成功 原因可能是这样的 通过 yum install openssl11 将 CentOS 7 升级到 OpenSSL 1 1 1 https stackoverflow com quest
  • Memcached 块限制

    为什么有硬编码的块限制 压缩后 0 5 兆 内存缓存 http memcached org 有人重新编译过它吗 我知道我不应该发送这样的大块 但这些额外的重块时不时地发生在我身上并造成严重破坏 这个问题曾经在官方常见问题解答 http co
  • AWS ALB 中基于路径的路由到具有多个端口的单个主机

    我想创建一个 ALB 它应该根据到不同网站的路径路由我的流量 例如 example com apple 应该转到 8080 example com grapes 应该转到 8180 example com oranges 应转到 8280
  • Rails 4 simple_form has_many 通过复选框不保存

    我正在尝试使用 simple form 通过复选框来实现员工经常性扣除表 我的代码有效 但所选的经常性扣除未保存在我的表中 我不明白为什么 这是我的模型 class Employee lt ActiveRecord Base belongs
  • 使用 maven-nar-plugin 在 Maven 中构建 C++ 项目

    有人使用 maven nar plugin 为不同平台 使用不同编译器构建 C 代码吗 如果有人请给我更多有关此的信息 我只是想知道如何使用 Maven 为不同平台构建 NAR 文件 我知道 为了能够在特定平台上构建项目 您应该在该平台上运
  • 在 Azure Functions 项目(.NET 标准 2.0)本地中找不到工作职能

    我正在尝试在 NET 标准 2 0 中创建一个 Azure Functions 项目 因为我需要在该项目中使用 NET 标准 2 0 类库 但是 当我尝试创建一个简单的 Azure Functions 项目并在本地运行它时 出现以下错误 h
  • em 中的媒体查询不受基本字体大小的影响

    我试图理解为什么设置不同的基本字体大小不会影响媒体查询的 EM 值 它们的默认基本字体大小为 16px 而其余内容反应正常 自己尝试一下 PX 中的媒体查询 https jsfiddle net sebtp n8x0tuvq 5 https
  • 输出导致与正则表达式不匹配的第一个字符

    是否可以输出导致与正则表达式不匹配的字符串 其索引 中的第一个字符 是否可以仅使用正则表达式匹配操作 或者必须使用更复杂的操作 例如 在 JavaScript 中 我可能有一个正则表达式 d 3 s d 2 匹配包含 3 位数字后跟空格和另
  • Android 中使用 xml 自定义形状

    我正在尝试绘制一个自定义形状 可以将其用作布局的背景 但我不能这样做 是否可以使用 android xml 中的 xml 绘制如下形状 我不知道如何从矩形的垂直中心切割半圆形 Use layer list制作这个自定义形状drawable
  • 无序对集合,编译错误

    我正在尝试创建一组无序的对 到目前为止我有 typedef std pair
  • 如何为子域配置 Facebook 应用程序

    我正在构建一个多租户应用程序 并且我挣扎将 Facebook 登录合并到 Web 应用程序中 例如 租户正在使用子域 http tenant 1 domain com http tenant 2 domain com http tenant
  • 如何识别STATUS_INVALID_CRUNTIME_PARAMETER异常

    平台是Windows 7 SP1 我最近花了一些时间调试由于代码将无效参数传递给 安全 CRT 函数之一而引起的问题 结果 我的应用程序立即中止 没有任何警告或任何内容 甚至没有崩溃对话框 起初 我尝试通过将 Windbg 附加到我的应用程
  • Chrome 浏览器 61v。单击可见区域之外的元素时出现问题

    当我将 Chrome 浏览器更新到 61v 时 单击可见区域之外的不可见元素会出现问题 早些时候它起作用了 尝试点击可见区域之外的链接 element Click 有 InvalidOperationException 元素在点 1134
  • 如何使信号 NaN 易于使用?

    IEEE754 标准定义了两类 NaN 安静 NaN QNaN 和信令 NaN SNaN 当 SNaN 加载到浮点寄存器时 浮点单元会引发异常 QNaN 可通过名为的常量用于 Delphi 代码NaN声明于Math 该常数的定义是 cons
  • Hibernate c3p0 连接池未超时空闲连接

    我们有一个 java 服务器连接到 MySQL 5 数据库 使用 Hibernate 作为持久层 该持久层使用 c3p0 进行数据库连接池 我尝试遵循 c3p0 和 hibernate 文档 Hibernate 如何配置 c3p0 连接池