mysql - Hibernate、C3P0、Mysql 连接池

标签 mysql hibernate connection-pooling c3p0 apache-commons-dbcp

我最近从 Apache DBCP 连接池切换到 C3P0 并查看了我的日志,发现存在连接超时问题。我过去在 DBCP 和 Tomcat 中没有遇到过这种情况,所以我想知道这是配置问题还是驱动程序问题。

每当我在服务器闲置一段时间后加载页面时,我都会看到某些内容未发送(因为服务器无法获得连接或其他原因)。当我刷新页面时,所有内容都在那里。

既然我一直在使用 MySQL,有人推荐使用 MySQL 连接池吗?您对 MySQL 连接池有何体验?

沃尔特

最佳答案

如果您正在使用的数据库被配置为在一段时间不活动后超时连接,则它们已经关闭,因此在从池中借用它们时无法使用。

如果您不能或不想重新配置您的数据库服务器,您可以配置 C3P0(和大多数其他连接池)以在从池中借用连接时使用测试查询来测试连接。您可以在 the relevant section of the C3P0 documentation 中找到更多详细信息。 .

编辑: 当然,您是对的,也有可能在 DBCP 池中配置了最长空闲时间,导致它们在超时之前从池中删除。无论如何,使用测试查询或确保连接在超时之前从池中删除应该可以解决问题。

关于mysql - Hibernate、C3P0、Mysql 连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1860419/

相关文章:

spring - Spring Boot 中的多个数据源和模式创建

c# - 连接丢失后自动重新连接到 MySql

php - AS3 中的日期格式

mysql - 在 MYSQL 中使用连接删除行

mysql - 在 mysql/innodb 中拥有超过 500M varchar(255) 记录的唯一键的最佳方法?

jdbc - 使用连接池一段时间后自动将更改提交为 TRUE

java - HTTP 状态 500 - 无法提取结果集 - hibernate

java - 如何将存储在字符串中的日期时间 "yyyy/MM/dd HH:mm:ss"转换为日期对象?

java - 使用投影获取集合(hibernate)

java - 随机找不到类路径资源