Неща, които можете да опитате:
-
setMaxWait(-1)
на BasicDataSource. Това му казва да чака неограничено време за връзка. -
Проверете дали
wait_timeout
на вашия MySQL сървър е зададен по подразбиране 8h. -
Задайте
?autoReconnect=true
на вашия JDBC URL -
setTestOnBorrow(true)
на BasicDataSource. Това ще му попречи да раздава остарели връзки, но ще добави допълнителни разходи към приложението ви (макар че ако вече имате толкова дълги единични заявки, вероятно дори няма да забележите тази част).
Като цяло намирам за лоша идея да продължавам да използвам повторно връзка. За мен смисълът да имам басейн е, че не трябва да правя това.
Транзакционни ли са вашите запитвания? Някаква наистина дълга заявка заключва основна таблица?