Hibernate,C3P0,Mysql连接池

时间:2009-12-07 14:46:31

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

我最近从Apache DBCP连接池切换到C3P0,并通过我的日志查看是否存在连接超时问题。我过去没有使用DBCP和Tomcat,所以我想知道它是配置问题还是驱动程序问题。

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

有人建议使用MySQL连接池,因为我还在使用MySQL吗?您对MySQL连接池有什么经验?

沃尔特

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

只需添加指向另一个连接池的链接; BoneCP(http://jolbox.com);连接池比C3P0和DBCP都快。

与C3P0和DBCP一样,请确保配置空闲连接测试以避免您描述的情况(可能是MySQL的wait_timeout设置正在启动,通常设置为8小时)。