Mysql
 sql >> Base de données >  >> RDS >> Mysql

Première connexion :statut HTTP 500 - Échec du traitement de la demande ; l'exception imbriquée est org.springframework.transaction.CannotCreateTransactionException

Il semble que MySQL ou un pare-feu tue vos connexions inactives qui traînent dans votre pool de connexions jdbc pendant de longues périodes :

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

Vérifiez la valeur de wait_timeout sur MySQL.

Vous pouvez jouer avec les Paramètres DBCP par exemple. validationQuery, testOnBorrow et testWhileIdle.

Une configuration qui est "ceinture et bretelles", et qui résoudra probablement votre problème au détriment des performances est :

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

Ce qui précède testera les connexions chaque fois que vous empruntez au pool.