Ponieważ DBCP utrzymuje otwarte połączenia mysql dla nadchodzących żądań połączeń, stają się one ofiarami Przekroczenie limitu czasu serwera MySQL .
DBCP ma wiele funkcji, które mogą pomóc (może być używany począwszy od Tomcat 5.5 IIRC).
validationQuery="SELECT 1"
testOnBorrow="true"
Walidacja upewnia się, że połączenie jest prawidłowe przed zwróceniem go do aplikacji internetowej wykonującej metodę „pożycz”. Flaga oczywiście włącza tę funkcję.
Jeśli upłynie limit czasu (8 godzin, jak sądzę) i połączenie zostanie zerwane, testowane jest nowe połączenie (jeśli już go nie ma, jest tworzone) i przekazywane do aplikacji internetowej.
Inne możliwe podejścia:
-
użyj
testWhileIdle="true"
DBCP w ustawieniach zasobów, aby sprawdzić również bezczynne połączenia przed wykryciem skutecznego żądania. -
Użyj „connectionProperties”, aby wzmocnić połączenie MySQL (np.
autoReconnect/autoReconnectForPools=true
)