Szenario 1:
Spring Boot 2.6.3HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName(dataSourceProperties.getDriver());
hikariConfig.setUsername(dataSourceProperties.getUsername());
hikariConfig.setPassword(dataSourceProperties.getPassword());
hikariConfig.setJdbcUrl(jdbcUrl);
hikariConfig.setMaximumPoolSize(1);
hikariConfig.setMinimumIdle(0);
hikariConfig.setIdleTimeout(5000); //5 Seconds
return new HikariDataSource(hikariConfig);
MySQL 8
wait_timeout = 30 //30 Seconds
Nach meinem Verständnis von HikariCP mit Spring Boot und MySQL 8 sollte die ideale Verbindung nach 5 Sekunden entfernt werden, wenn ich PROCESSLIST in MySQL überprüfe, ob sie aktiv ist für 30 Sekunden, was dem wait_timout der MySQL-Verbindung entspricht.
Szenario 2:
hikariConfig.setKeepaliveTime(40000); //40 SecondsDie Verbindung sollte 40 Sekunden lang aktiv sein, aber nach 30 Sekunden getrennt werden, was dem wait_timout der MySQL-Verbindung entspricht.
Das war ich Testen, wie HikariCP in zwei Szenarien mit Spring Boot 2.6.3 und MySQL 8 mit inaktiven Verbindungen umgeht, konfiguriert wie folgt:
Szenario 1:
- HikariCP emptyTimeout auf 5 Sekunden eingestellt.
- MySQL wait_timeout auf 30 Sekunden eingestellt.
Szenario 2:
- HikariCP keepaliveTime auf 40 Sekunden eingestellt.
- MySQL wait_timeout immer noch 30 Sekunden.
Ich würde gerne verstehen, warum sich HikariCP so verhält und wie diese Konfigurationen mit MySQLs wait_timeout interagieren .