|
|
1
7
我以前遇到过这样的问题,当数据库在一个单独的盒子上,并且在中间有一个防火墙,设置为超时空闲连接。 在某些情况下,防火墙以JDBC端检测不到的方式切断连接,并且试图使用它会导致不确定的块。 在我的例子中,它是一个自定义连接池,在从池返回连接之前,它向连接发送了一个测试查询。我将此测试查询配置为具有超时(使用statement.setquerytimeout),以便它不会无限期阻塞。 |
|
|
2
1
检查池实现的配置。通常,它是 Apache DBCP 哪个有 a timeout 每次连接后,它都会关闭。 在你的代码中,你不应该保持联系。拿一个,用一下,马上关上。游泳池会确保这个不会花费太多。 |
|
|
3
1
解决空闲超时问题的一种方法是使用双连接池,一个处于活动状态,另一个处于备用状态(尚未创建任何连接)。使用触发时间远小于防火墙空闲超时的计时器,并在连接池之间切换。我试过这个,它起作用了。 |
|
|
4
1
您必须在数据源中添加一些参数: 更重要的是添加testonborrow和validationquery |
|
|
5
1
我们解决了类似症状的问题,这些症状也被证明是由防火墙引起的。 我们可以通过更改TestWhileIdle连接池属性来解决这个问题,该属性可以防止连接闲置和防火墙关闭连接。参见 Apache commons dbcp BasicDataSource . 下面是配置文件persistentce-context.xml中的一个应用程序,它修复了问题:
很可能我们只需要添加testwileidle(默认情况下为false),但为了更好的度量,添加了其他两个属性。 在我们的例子中,这里是我们看到的一些日志。注意,在这个调试日志中,需要16分钟才能打开连接,然后才能使用连接,这就是导致所有内容挂起的原因。没有错误,很难找到。
|
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |