Saker du kan prova:
-
setMaxWait(-1)
på BasicDataSource. Det säger att den ska vänta på en anslutning på obestämd tid. -
Kontrollera att
wait_timeout
på din MySQL-server är inställd på standard 8h. -
Ställ in
?autoReconnect=true
på din JDBC URL -
setTestOnBorrow(true)
på BasicDataSource. Detta kommer att förhindra att den delar ut inaktuella anslutningar men kommer att lägga till overhead till din app (men om du redan har så långa enstaka frågor kommer du förmodligen inte ens att märka den delen).
Generellt sett tycker jag att det är en dålig idé att fortsätta återanvända en anslutning. För mig är poängen med att ha en pool att jag inte behöver göra det.
Är dina frågor transaktionella? Är det någon riktigt lång fråga som låser en större tabell?