Eftersom DBCP håller returnerade mysql-anslutningar öppna för kommande anslutningsförfrågningar, faller de offer för Timeout för MySQL Server .
DBCP har ett antal funktioner som kan hjälpa (kan användas från och med Tomcat 5.5 IIRC).
validationQuery="SELECT 1"
testOnBorrow="true"
Valideringen säkerställer att en anslutning är giltig innan den returneras till en webbapp som kör "låna"-metoden. Flaggan aktiverar naturligtvis denna funktion.
Om timeouten (tror jag) har gått ut och anslutningen är död, testas en ny anslutning (om det inte finns någon längre skapas den) och skickas till webbappen.
Andra möjliga tillvägagångssätt:
-
använd
testWhileIdle="true"
DBCP i dina resursinställningar för att även kontrollera lediga anslutningar innan en effektiv begäran upptäcks. -
Använd 'connectionProperties' för att förstärka din MySQL-anslutning (t.ex.
autoReconnect/autoReconnectForPools=true
)