Dingen die je kunt proberen:
-
setMaxWait(-1)
op de BasicDataSource. Dat vertelt het om voor onbepaalde tijd te wachten op een verbinding. -
Controleer of de
wait_timeout
op uw MySQL-server is ingesteld op de standaard 8h. -
Stel
?autoReconnect=true
in op uw JDBC-URL -
setTestOnBorrow(true)
op de BasicDataSource. Dit voorkomt dat het oude verbindingen uitdeelt, maar voegt overhead toe aan je app (hoewel als je al zulke lange enkele zoekopdrachten hebt, je dat deel waarschijnlijk niet eens opmerkt).
Over het algemeen vind ik het een slecht idee om een verbinding steeds opnieuw te gebruiken. Voor mij is het punt van het hebben van een zwembad dat ik dat niet hoef te doen.
Zijn uw vragen transactioneel? Blokkeert een hele lange query een grote tafel?