Jak sugerujesz, dzieje się tak, ponieważ mysql zamyka bezczynne połączenia po każdym wait_timeout
Karnety; masz kilka opcji obejścia problemu:
- użyj menedżera puli połączeń, takiego jak c3p0 lub apache DBCP . To zajmie się rewalidacją połączeń na żądanie, ostatecznie możesz określić, które zapytanie zostanie uruchomione, aby sprawdzić, czy połączenie jest aktywne.
- ustaw
wait_timeout
w mysql wystarczająco duży dla twojego przypadku użycia (domyślnie 8 godzin). - skonfiguruj zaplanowane zadanie (na przykład przy użyciu kwarc ), który odświeża połączenia, "pingując" serwer mysql.