SORM与MySQL空闲连接

时间:2014-01-16 07:04:14

标签: mysql jdbc playframework c3p0 sorm

我正在使用 Play Framework 2.2.1 MySQL 5.5 sorm 0.3.10

由于MySQL在指定的空闲超时后丢弃非活动连接,因此我在我的应用程序中收到此异常:

[CommunicationsException: Communications link failure The last packet successfully received from the server was 162 701 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.]

据我了解,sorm正在使用c3p0连接池。是否有可能以某种方式配置c3p0或sorm以指定延迟启动mysql或在连接断开后自动重新连接?

2 个答案:

答案 0 :(得分:2)

SORM的{p> 0.3.13-SNAPSHOTtimeout引入Instance参数,默认设置为30。此设置确定允许基础连接空闲的秒数。当达到超时时,会向db发送一种“keepalive”请求,并重置计时器。在进行任何正常查询时,计时器也会重置。实现只依赖于C3P0的idleConnectionTestPeriod

有关进一步的讨论,建议和报告,请访问the associated ticket on the issue tracker或打开另一个。如果the associated ticket中没有投诉,则此更改将进入0.3.13版本。

答案 1 :(得分:1)

使用c3p0很容易解决这个问题,但我会仔细检查你是否正在使用它。 BoneCP是默​​认的play2连接池。使用BoneCP也很容易解决这个问题!

在c3p0中,配置参数maxIdleTimemaxConnectionAge或(更好)连接测试机制会有所帮助。见http://www.mchange.com/projects/c3p0/#configuring_connection_testing

如果你想在play2中使用c3p0,请参阅https://github.com/swaldman/c3p0-play