Spring-Boot-2.0.0-M1-versjonen endrer standard databasetilkoblingspool fra tomcat jdbc pool til hikari, og når Spring Boot-applikasjonen kjøres, gir konsollen følgende
2021-11-25 14:48:09.429 INFO 22236 --- [hoved] com.zaxxer.hikari.HikariDatakilde: HikariPool-1 - Starter... 2021-11-25 14:48:09.813 INFO 22236 --- [hoved] com.zaxxer.hikari.HikariDatakilde: HikariPool-1 - Start fullført. Standardverdiene for Hikaris standardkonfigurasjon er som følger:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":1800000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":600000}
| navn | Konstruktørstandardinnstillinger | Standardkonfigurasjonen er verdien etter validering | validatereset | | minIdle | -1 | 10 | minIdle<0 eller minIdle>maxPoolSize, den settes til maxPoolSize | | maxPoolSize | -1 | 10 | Hvis maxPoolSize er mindre enn 1, blir den tilbakestilt. Når minIdle<=0 tilbakestilles til DEFAULT_POOL_SIZE, er den 10; Hvis minIdle>0, tilbakestilles den til verdien minIdle | | maxLifetime | MINUTES.toMillis(30) = 1800000 | 1800000 | Hvis den ikke er lik 0 og mindre enn 30 sekunder, vil den bli tilbakestilt til 30 minutter | | forbindelseTimeout | SECONDS.toMillis(30) = 30000 | 30000 | Hvis det er under 250 ms, tilbakestilles det til 30 sekunder | | valideringTimeout | SECONDS.toMillis(5) = 5000 | 5000 | Hvis det er under 250 ms, tilbakestilles det til 5 sekunder | | loginTimeout | 10 | 30 | Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), som er maksimumet for connectionTimeout+500ms for å konvertere antall sekunder til hele og 1 | | idleTimeout | MINUTES.toMillis(10) = 600000 | 600000 | Hvis idleTimeout+1 sekund > maxLifetime og maxLifetime >0, vil den bli tilbakestilt til 0; Hvis idleTimeout!=0 og mindre enn 10 sekunder, tilbakestilles den til 10 sekunder | | lekkasjeDeteksjonTerskel | 0 | 0 | Hvis det er større enn 0 og ikke en enhetstest, vurderes det videre at (leakDetectionThreshold < SECONDS.toMillis(2) eller (leakDetectionThreshold > maxLifetime & maxLifetime > 0) vil bli tilbakestilt til 0. Det vil si, hvis det skal tre i kraft, må det være >0, og det kan ikke være mindre enn 2 sekunder, og når maxLifetime > 0 timer kan ikke være større enn maxLifetime | | initializationFailTimeout | 1 | 1 | - | | isAutoCommit | true | true | - | | isReadOnly | false | Fasle | - | | isAllowPoolSuspension | false | false | - | | isIsolateInternalQueries | false | false | - | | isRegisterMbeans | false | false | - | | Forseglet | false | true | Dette flagget gjelder etter at kjøringen starter, noe som indikerer at modifikasjonen ikke lenger kjører | | poolName | null | HikariPool-1 | - | | katalog | null | null | - | | connectionInitSql | null | null | - | | connectionTestQuery | null | null | - | | dataSourceClassName | null | null | - | | skjema | null | null | - | | transactionIsolationName | null | null | - | | datakilde | null | null | - | | dataKildeEgenskaper | {} | {} | - | | threadFactory | null | null | - | | planlagtEksekutor | null | null | - | | metricsTrackerFactory | null | null | - | | metricRegistry | null | null | - | | healthCheckRegistry | null | null | - | | healthCheckEgenskaper | {} | {} | - |
Når man utfører en stresstest, kan applikasjonen rapportere følgende feil:
Forårsaket av: org.springframework.jdbc.CannotGetJdbcConnectionException: Mislykkedes i å hente JDBC Connection; det nestede unntaket er java.sql.SQLTransientConnectionException: HikariPool-1 - Tilkobling er ikke tilgjengelig, forespørsel tidsutgikk etter 30000 ms. på org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82) på org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80) på org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) at 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) på com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) på org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) på com.sun.proxy.$Proxy 224.query(ukjent kilde) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) ... 114 til Forårsaket av: java.sql.SQLTransientConnectionException: HikariPool-1 - Tilkobling er ikke tilgjengelig, forespørsel går ut etter 30000 ms. på com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695) på com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197) på com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162) på com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128) på org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116) på org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79) ... 126 til
Feil:Mislyktes i å skaffe JDBC-forbindelsen; det nestede unntaket er java.sql.SQLTransientConnectionException: HikariPool-1 - Tilkobling er ikke tilgjengelig, forespørsel går ut etter 30000 ms.
Kontrolleren gir ut HikariDataSource-konfigurasjonsgrensesnittkoden som følger:
Optimaliser ordningen, øk maksimalt antall tråder og øk antall tilkoblinger som holdes inaktive, og modifiser application.yml-konfigurasjonen som følger:
(Slutt)
|