我正在阅读有关调整 JDBC 连接池配置的内容,在Timeout Settings >> Idle Timeout部分下,它显示:
为获得最佳性能,请将空闲超时设置为零 (0) 秒,以便不会删除空闲连接。这确保了在创建新连接和禁用空闲监视器线程时通常不会受到惩罚。但是,存在数据库服务器将重置太长时间未使用的连接的风险。
这最后一句话令人不安。在 Tomcat 上,您可以将 JDBC 连接指定为内部的 JNDI 查找context.xml
。我假设上面链接中的空闲超时字段对应于 Tomcat 的(DBCP)maxIdle
属性。
所以我问:如果我设置maxIdle
为 0 会发生什么,这告诉 DBCP 不要删除空闲连接,但随后服务器挂断(或重置)空闲连接?是否有特定的异常被调用?应用程序会挂起吗?如何缓解此类问题但仍保持maxIdle
在 0?