Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Erste Anmeldung:HTTP-Status 500 - Anfrageverarbeitung fehlgeschlagen; Die verschachtelte Ausnahme ist org.springframework.transaction.CannotCreateTransactionException

Es scheint, dass MySQL oder eine Firewall Ihre inaktiven Verbindungen, die für längere Zeit in Ihrem jdbc-Verbindungspool herumhängen, beendet:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 
The last packet successfully received from the server was 4,665,488 milliseconds ago.

Überprüfen Sie den Wert von wait_timeout auf MySQL.

Sie können mit DBCP-Einstellungen herumspielen z.B. ValidationQuery, testOnBorrow und testWhileIdle.

Eine Konfiguration, die „Gürtel und Hosenträger“ ist und wahrscheinlich Ihr Problem auf Kosten der Leistung lösen wird, ist:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName" value="${jdbc.driverClassName}"/>
  <property name="url" value="${jdbc.url}"/>
  <property name="username" value="${jdbc.username}"/>
  <property name="password" value="${jdbc.password}"/>
  <property name="validationQuery" value="SELECT 1"/>
  <property name="testOnBorrow" value="true"/>
</bean>

Das obige testet die Verbindungen jedes Mal, wenn Sie etwas aus dem Pool ausleihen.