Tomcat / DBCP空闲超时:如果服务器挂断怎么办?

时间:2013-07-11 14:17:07

标签: java performance tomcat connection-pooling apache-commons-dbcp

我正在tuning JDBC connection pool configurations上阅读超时设置>> 空闲超时部分,内容如下:

  

为获得最佳性能,请将空闲超时设置为零(0)秒,以便不会删除空闲连接。这可确保在创建新连接和禁用空闲监视器线程时通常没有任何损失。 但是,数据库服务器可能会重置未使用太久的连接。

最后一句令人不安。在Tomcat上,您可以从context.xml内部将JDBC连接指定为JNDI查找。我假设上面链接中的空闲超时字段对应于Tomcat(DBCP)maxIdle属性。

所以我问:如果我将maxIdle设置为0会告诉DBCP不要删除空闲连接,但服务器是否挂起(或重置)空闲连接会怎么样?是否有被调用的特定异常?应用程序会挂起吗?如何缓解此类问题,但仍将maxIdle保持为0?

1 个答案:

答案 0 :(得分:1)

使用Tomcat或DBCP连接池,您可以通过使用验证查询来缓解此类问题,以便在从池中检出连接时检查连接的运行状况(这是validateOnBorrow属性)。

使用Tomcat池,您可以将其配置为定期验证空闲连接(我相信validateWhileIdle),而不是每次使用它时都检查连接。