Mysql
 sql >> Database >  >> RDS >> Mysql

Primo accesso:stato HTTP 500 - Elaborazione della richiesta non riuscita; l'eccezione nidificata è org.springframework.transaction.CannotCreateTransactionException

Sembra che MySQL o un firewall stiano eliminando le tue connessioni inattive che rimangono nel pool di connessioni jdbc per lunghi periodi di tempo:

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

Controlla il valore di wait_timeout su MySQL.

Puoi giocare con le impostazioni DBCP per esempio. validationQuery, testOnBorrow e testWhileIdle.

Una confugurazione che è "cintura e bretelle" e che probabilmente risolverà il tuo problema a scapito delle prestazioni è:

<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>

Quanto sopra verificherà le connessioni ogni volta che prendi in prestito dal pool.