De versie Spring-Boot-2.0.0-M1 verandert de standaard databaseverbindingspool van tomcat jdbc pool naar hikari, en bij het uitvoeren van de spring boot-applicatie geeft de console het volgende uit
2021-11-25 14:48:09.429 INFO 22236 --- [ hoofd] com.zaxxer.hikari.HikariDataBron: HikariPool-1 - Start... 2021-11-25 14:48:09.813 INFO 22236 --- [ hoofd] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start voltooid. De standaardwaarden voor Hikari's standaardconfiguratie zijn als volgt:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":1800000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":600000}
| naam | Constructor-standaarden | De standaardconfiguratie is de waarde na validate | validatereset | | minIdle | -1 | 10 | minIdle<0 of minIdle>maxPoolSize, wordt deze gereset naar maxPoolSize | | maxPoolSize | -1 | 10 | Als maxPoolSize kleiner is dan 1, wordt deze gereset. Wanneer minIdle<=0 wordt teruggezet naar DEFAULT_POOL_SIZE, is het 10; Als minIdle>0 wordt teruggezet naar de waarde van minIdle. | | maxLifetime | MINUTES.toMillis(30) = 18000000 | 1800000 | Als het niet gelijk is aan 0 en minder dan 30 seconden, wordt het teruggezet naar 30 minuten | | verbindingTime-out | SECONDS.toMillis(30) = 30.000 | 30000 | Als het minder dan 250 ms is, wordt het teruggezet naar 30 seconden | | validatieTime-out | SECONDS.toMillis(5) = 5000 | 5000 | Als het minder dan 250 ms is, wordt het teruggezet naar 5 seconden | | loginTime-out | 10 | 30 | Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), wat het maximum is van connectionTimeout+500ms om het aantal seconden om te zetten in het geheel en 1 | | idleTimeout | MINUTES.toMillis(10) = 600000 | 600000 | Als idleTimeout+1 seconde maxLifetime en maxLifetime >0 >, wordt deze teruggezet naar 0; Als idleTimeout!=0 en minder dan 10 seconden, wordt deze teruggezet naar 10 seconden | | LeakDetectionThreshold | 0 | 0 | Als het groter is dan 0 en geen eenheidstest, wordt verder beoordeeld dat (leakDetectionThreshold < SECONDS.toMillis(2) of (leakDetectionThreshold > maxLifetime & maxLifetime > 0) wordt teruggezet naar 0. Dat wil zeggen, als het effect moet worden, moet het >0 zijn, en mag het niet minder dan 2 seconden zijn, en wanneer maxLifetime > 0 uur kan niet groter zijn dan maxLifetime | | initialisatieFailTimeout | 1 | 1 | - | | isAutoCommit | true | true | - | | isAlleenLezen | false | Fasle | - | | isAllowPoolSuspension | false | false | - | | isIsolateInternalQueries | false | false | - | | isRegisterMbeans | false | false | - | | Verzegeld | false | true | Deze vlag is waar nadat de run is begonnen, wat aangeeft dat de wijziging niet meer actief is | | poolName | nul | HikariPool-1 | - | | catalogus | nul | nul | - | | connectionInitSql | nul | nul | - | | connectionTestQuery | nul | nul | - | | dataSourceClassName | nul | nul | - | | schema | nul | nul | - | | transactionIsolationName | nul | nul | - | | dataSource | nul | nul | - | | dataSourceProperties | {} | {} | - | | threadFactory | nul | nul | - | | geplandeExecutor | nul | nul | - | | metricsTrackerFactory | nul | nul | - | | metricRegistry | nul | nul | - | | healthCheckRegistry | nul | nul | - | | healthCheckEigenschappen | {} | {} | - |
Bij het uitvoeren van een stresstest kan de applicatie de volgende fouten rapporteren:
Veroorzaakt door: org.springframework.jdbc.CannotGetJdbcConnectionException: Niet in geslaagd JDBC-verbinding te verkrijgen; geneste uitzondering is java.sql.SQLTransientConnectionException: HikariPool-1 - Verbinding is niet beschikbaar, verzoek wordt na 30000ms getimed. op org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82) op org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80) op org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) op org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) op com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) op org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) op com.sun.proxy.$Proxy 224.query(Onbekende bron) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) ... Nog eens 114 Veroorzaakt door: java.sql.SQLTransientConnectionException: HikariPool-1 - Verbinding is niet beschikbaar, verzoek vertraagd na 30.000ms. op com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695) op com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197) op com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162) op com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128) op org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) op org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116) op org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79) ... Nog eens 126
Fout:Niet in geslaagd JDBC-verbinding te verkrijgen; geneste uitzondering is java.sql.SQLTransientConnectionException: HikariPool-1 - Verbinding is niet beschikbaar, verzoek wordt na 30000ms getimed.
De controller geeft de HikariDataSource-configuratie-interfacecode als volgt uit:
Optimaliseer het schema, verhoog het maximale aantal threads en verhoog het aantal inactieve verbindingen, en pas de application.yml configuratie als volgt aan:
(Einde)
|