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_timeoutna twoim serwerze MySQL jest ustawione domyślnie na 8h. -
Ustaw
?autoReconnect=truena 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ę?