Hibernate、C3P0、Mysql连接池

Hibernate、C3P0、Mysql连接池,mysql,hibernate,connection-pooling,c3p0,apache-commons-dbcp,Mysql,Hibernate,Connection Pooling,C3p0,Apache Commons Dbcp,我最近从ApacheDBCP连接池切换到C3P0,并查看了我的日志,发现存在连接超时问题。我以前在DBCP和Tomcat中没有遇到过这种情况,所以我想知道这是配置问题还是驱动程序问题 每当我在服务器空闲一段时间后加载页面时,我会看到一些内容没有发送(因为服务器无法获得连接或其他)。当我刷新页面时,所有内容都在那里 既然我正在使用MySQL,有人推荐使用MySQL连接池吗?您对MySQL连接池有何体验 Walter如果您正在使用的数据库配置为在一段时间不活动后超时连接,则这些连接已经关闭,因此从池

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

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

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


Walter

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

如果无法或不希望重新配置数据库服务器,则可以配置C3P0(以及大多数其他连接池),以便在从池借用连接时使用测试查询测试连接。您可以在中找到更详细的信息


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

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

如果无法或不希望重新配置数据库服务器,则可以配置C3P0(以及大多数其他连接池),以便在从池借用连接时使用测试查询测试连接。您可以在中找到更详细的信息


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

只需添加到另一个连接池的链接;BoneCP();比C3P0和DBCP都快的连接池


像C3P0和DBCP一样,确保配置空闲连接测试以避免您描述的场景(可能MySQL的等待超时设置正在启动,通常设置为8小时)。

只需添加到另一个连接池的链接;BoneCP();比C3P0和DBCP都快的连接池


像C3P0和DBCP一样,确保配置空闲连接测试以避免您描述的场景(可能MySQL的等待超时设置正在启动,通常设置为8小时)。

好的一点-我必须查看默认设置。也许我错过了c3p0中的一个设置,而我在dbcp中设置了超时。我想发生的事情是我从persistence.xml中删除了我认为没有使用的配置参数。我没有在我的jetty-env.xml中设置它们,所以我似乎删除了一个重要的配置。很好的一点是,我必须查看默认设置是什么。也许我错过了c3p0中的一个设置,而我在dbcp中设置了超时。我想发生的事情是我从persistence.xml中删除了我认为没有使用的配置参数。我没有在jetty-env.xml中设置它们,所以我似乎删除了一个重要的配置。是的,我偶然发现了这个,不确定我是否会尝试一下。我对C3P0总体上很满意,尽管它没有得到维护。看看基准测试,C3P0在高线程负载下失控:-(是的,我偶然发现了这一点,不确定我是否会尝试一下。尽管C3P0没有得到维护,但总体上我对它很满意。看看基准测试,C3P0在高线程负载下失控:-(