Podobne problemy miałem z MySQL i pulą połączeń. Problem polega na tym, że informujesz pulę połączeń, że limit czasu bezczynności wynosi 30 minut, ale baza danych przerywa połączenie po 10 sekundach. Ponieważ okres sprawdzania bezczynnego połączenia wynosi 120 sekund, pozostaje nieco mniej niż 110 sekund na użycie przez pulę przerwanego połączenia!
Do produkcji użyłbym następujących ustawień:
MySQL:
wait_timeout=75
C3P0:
maxIdleTime=60
idleConnectionTestPeriod=55