Rzeczy, których możesz spróbować:
-
setMaxWait(-1)
w podstawowym źródle danych. To każe mu czekać w nieskończoność na połączenie. -
Sprawdź, czy
wait_timeout
na twoim serwerze MySQL jest ustawione domyślnie na 8h. -
Ustaw
?autoReconnect=true
na Twoim adresie URL JDBC -
setTestOnBorrow(true)
w podstawowym źródle danych. Zapobiegnie to przekazywaniu nieaktualnych połączeń, ale zwiększy obciążenie Twojej aplikacji (chociaż jeśli masz już tak długie pojedyncze zapytania, prawdopodobnie nawet tego nie zauważysz).
Ogólnie uważam, że ponowne używanie połączenia jest złym pomysłem. Dla mnie celem posiadania basenu jest to, że nie muszę tego robić.
Czy Twoje zapytania mają charakter transakcyjny? Czy jakieś naprawdę długie zapytanie blokuje główną tabelę?