Hibernate/C3PO 4.1.4.Final、Jetty、Java 6、およびMysql 5.1.63を実行するWebアプリケーションがあります。MySQL/Hibernateにランダムに "通信リンクの失敗"があります
javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException:通信リンク 失敗
成功し、サーバから受信した最後のパケットが238519 ミリ秒前のことでした。サーバーに最後に送信されたパケットは、0ミリ秒前に でした。
当社のpersistence.xmlのプロパティセクションでは、MySQL上
<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>
当社のタイムアウトは600秒に設定されている...このようになります。これが1/5回起こっているかどうかはわかりません。サーバーの負荷は非常に小さく、データベースは比較的小さく、サーブレットはすべて数秒で実行されます。
誰もが考えている?
JettyとMySQLをホストするコンピュータ間の通信に問題はありますか?ファイアウォールのいくつかの種類? –
このようなケースを引き起こすためにあなたがやっている取引は何ですか?彼らはどれくらい持続するのですか?それらがMySQLのタイムアウトより長く続く場合は、トランザクションを複数のバッチトランザクションに分割してみてください。ソース:そこにいて、それをしてください(それは私が記述したものです:)) –
まず第一にあなたのMySQLは操作可能ですか?このパラメータは正しいurl -rp.config.db.urlを指していますか? – Chan