我们有一个运行 Hibernate/C3PO 4.1.4.Final、Jetty、Java 6 和 Mysql 5.1.63 的 web 应用程序。
javax.persistence.PersistenceException:org.hibernate.exception.JDBCConnectionException:通信链路故障
从服务器成功接收到的最后一个数据包是 238,519 毫秒前。最后一个成功发送到服务器的数据包是 0 毫秒前。
我们的 persistence.xml 的属性部分看起来像这样......
<properties>
<property name="hibernate.show_sql" value="false"/>
<!--Begin Credentials -->
<property name="hibernate.connection.url"
value="${rp.config.db.url}&useUnicode=true&characterEncoding=UTF-8"/>
<property name="hibernate.connection.username" value="${rp.config.db.user}"/>
<property name="hibernate.connection.password" value="${rp.config.db.password}"/>
<!--End Credentials -->
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.dialect" value="com.printlogix.rp.server.utils.Mysql5BitBooleanDialect"/>
<property name="hibernate.hbm2ddl.auto" value="validate"/>
<!--C3PO -->
<property name="hibernate.connection.provider_class"
value="org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider"/>
<property name="hibernate.c3p0.acquire_increment" value="25"/>
<property name="hibernate.c3p0.idle_test_period" value="60"/>
<property name="hibernate.c3p0.timeout" value="120"/>
<property name="hibernate.c3p0.max_size" value="150"/>
<property name="hibernate.c3p0.min_size" value="25"/>
<property name="hibernate.c3p0.max_statement" value="0"/>
<property name="hibernate.c3p0.preferredTestQuery" value="select 1;"/>
</properties>
我们在 MySQL 上的超时设置为 600 秒。我们不知道这是如何发生的 1/5 次。服务器负载很小,数据库相对较小,servlet 都在几秒钟内运行。
有人有什么想法吗?