Mamy webappa działającą w Hibernate/C3PO 4.1.4.Final, Jetty, Java 6 i Mysql 5.1.63.MySQL/Hibernate losowo ma "Błąd łącza komunikacyjnego"
javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: link Komunikacja awaria
Ostatni pakiet odebrany z serwera było 238,519 milisekund temu. Ostatni pakiet wysłany pomyślnie na serwer był 0 milisekund temu.
sekcja właściwości naszej persistence.xml wygląda tak ...
<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>
Nasz czas oczekiwania na MySQL jest ustawiony na 600 sekund. Nie mamy pojęcia, jak to się dzieje 1/5 razy. Serwer ma bardzo małe obciążenie, baza danych jest stosunkowo mała, serwlety działają w ciągu kilku sekund.
Ktoś ma jakieś pomysły?
Czy występują problemy z komunikacją między komputerami obsługującymi Jetty i MySQL? Jakiś firewall? –
jakie transakcje robisz, aby spowodować taki przypadek? Jak długo to trwa? Jeśli trwają dłużej niż limit czasu MySQL, spróbuj przerwać transakcję na wiele transakcji wsadowych. Źródła: Byłem tam, zrobiłem to (jeśli tak to opisałem :)) –
Po pierwsze, czy twój mysql działa? i czy ten parametr wskazuje poprawny adres url -rp.config.db.url? – Chan