0

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

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

有没有人推荐使用 MySQL 连接池,因为我一直在使用 MySQL?您对 MySQL 连接池有什么体验?

沃尔特

4

2 回答 2

3

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

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

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

于 2009-12-07T15:44:35.197 回答
1

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

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

于 2009-12-08T15:53:31.547 回答