Jag hade liknande problem med MySQL och en anslutningspool. Problemet är att du berättar för anslutningspoolen att en inaktiv timeout är 30 minuter, men databasen bryter anslutningen efter 10 sekunder. Eftersom din inaktiva anslutningskontrollperiod är 120 sekunder, lämnar det lite under 110 sekunder för poolen att använda en bruten anslutning!
Jag skulle använda följande inställningar för produktion:
MySQL:
wait_timeout=75
C3P0:
maxIdleTime=60
idleConnectionTestPeriod=55