BoneCP连接超时

时间:2013-06-09 21:49:47

标签: mysql hibernate bonecp

我正在将 Hibernate 4与BoneCP 集成,并希望了解这些属性的含义:

<property name="idleConnectionTestPeriod">30</property>
<property name="idleMaxAge">240</property>
<property name="connectionTestStatement">select 1 from db.table limit 1</property>

我的应用程序需要保持与mysqldb 24x7的持续连接

是否意味着测试语句每30分钟执行一次?那个连接在240分钟后会变得陈旧? 如何使我的连接永久保持,因为偶尔使用此配置

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

1 个答案:

答案 0 :(得分:3)

由于BoneCP的作者写了here,有两种方法可以管理连接状态 - 您使用的方式和设置maxConnectionAgeInSeconds。

重要提示 - 不要忘记MySQL配置,例如wait_timeout。它以秒为单位,必须大于maxConnectionAgeInSeconds。您可以在MySQL目录中的my.ini文件中更改此参数。

例如,我当前的配置:
wait_timeout = 3600(MySQL参数);
maxConnectionAgeInSeconds = 3000(BoneCP参数)

另外,我将wait_timeout变量设置为与wait_timeout相同。我不确定它是否有意义,但我看到MySQL需要min(interactive_timeout,wait_timeout)。实际上,interactive_timeout是交互式客户端的超时 - 当您使用MySQL命令行时,您是交互式客户端。无论如何,最好让它们相等 - 即使这个参数也没有意义,它就像保险一样。

P.S。在设置变量之前,不要忘记关闭mysql(cmd-> net stop mysql)。设置新值后,使用show variables like '%timeout%';

在命令行中检查它们