小编Ant*_*ier的帖子

Tomcat JDBC连接池:testOnBorrow vs testWhileIdle

由于各种原因,池中的连接可能变为无效:服务器连接超时,网络问题......

我的理解是Tomcat JDBC连接池不保证它为应用程序提供的连接的有效性.

为了防止(实际上只降低风险)从池中获得无效连接,解决方案似乎是连接验证的配置.验证连接意味着在数据库上运行非常基本的查询(例如SELECT 1;在MySQL上).

Tomcat JDBC连接池提供了几个测试连接的选项.这两个我觉得更有趣的是testOnBorrowtestWhileIdle.

首先,我认为这testOnBorrow是最好的选择,因为它在将连接提供给应用程序之前基本上验证了连接(最大频率定义为validationInterval).

但是经过一秒钟后我才意识到在使用它之前测试连接可能会影响应用程序的响应能力.所以我认为使用testWhileIdle它可以更高效,因为它在不使用时测试连接.

无论我选择哪个选项,它们似乎只会降低获得无效连接的风险,但这种风险仍然存在.

所以我最后问:我应该使用testOnBorrow或者testWhileIdle两者兼而有之?

另一方面,我很惊讶validationInterval不适用testOnReturn,我没有达到目的testOnConnect.

tomcat connection-pooling jdbc

14
推荐指数
2
解决办法
1万
查看次数

标签 统计

connection-pooling ×1

jdbc ×1

tomcat ×1