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

L'app Spring perde la connessione a MySql dopo 8 ore. Come configurare correttamente?

La risposta breve è che dovrebbe essere sufficiente. DBCP supporta il test della connessione in prestito dal pool di connessioni (impostazione predefinita), ma supporta anche il test al ritorno e il test inattivo.

Vale anche la pena capire cosa potrebbe andare storto qui. Sembra che qualcosa tra il tuo server Tomcat e il database stia interrompendo la connessione inattiva dopo un timeout (come un router o un firewall). Il problema è che Tomcat pensa di avere ancora una connessione valida, prova a fare un po' di lavoro con la connessione e fallisce, ma mantiene la connessione attiva e la restituisce al pool. Ora ogni ulteriore tentativo di parlare con il database fallirà se gli viene assegnata la stessa connessione interrotta dal pool.

Penso che sia stato l'eccellente 'Release It!' di Michael Nygard libro che ha descritto questo scenario in uno dei suoi racconti dalle trincee.

Dovrai anche esaminare come MySQL pulisce le connessioni morte poiché quando Tomcat perde la connessione dopo 8 ore, anche il DB non sarà a conoscenza della connessione non riuscita.

Un ultimo punto, se stai usando Tomcat 7, passa alla loro nuova connessione piscina in quanto offre prestazioni migliori rispetto a DBCP.