A Spring-Boot-2.0.0-M1 verzió megváltoztatja az alapértelmezett adatbázis-kapcsolati poolot tomcat jdbc poolról hikari-ra, és a spring boot alkalmazás futtatása során a konzol a következőket adja ki
2021-11-25 14:48:09.429 INFO 22236 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Indul... 2021-11-25 14:48:09.813 INFO 22236 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Kezdés befejezve. Hikari alapértelmezett konfigurációjának alapértelmezett értékei a következők:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":180000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":600000}
| név | Konstruktor alapértelmezések | Az alapértelmezett konfiguráció a validálás utáni érték | validatereset | | minIdle | -1 | 10 | minIdle<0 vagy minIdle>maxPoolSize, visszaállítva maxPoolSize-re van | | maxPoolSize | -1 | 10 | Ha maxPoolSize kisebb, mint 1, akkor újraindul. Amikor minIdle<=0 visszaállítva DEFAULT_POOL_SIZE-re, akkor 10; Ha minIdle>0, akkor visszaáll minIdle értékre | | maxLifetime | PERC.toMillis(30) = 1800000 | 1800000 | Ha nem egyenlő 0-val, és kevesebb mint 30 másodperc, visszaállítják 30 percre | | connectionTimeout | SECONDS.toMillis(30) = 30000 | 30000 | Ha kevesebb mint 250 ms, visszaállítják 30 másodpercre | | validációIdőkorlát | MÁSODPERCEK.toMillis(5) = 5000 | 5000 | Ha kevesebb, mint 250 ms, visszaállítják 5 másodpercre | | loginTimeout | 10 | 30 | Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), ami a connectionTimeout+500ms maximális száma, amely a másodpercek számát egészére és 1-re alakítja | | idleTimeout | PERC.toMillis(10) = 600000 | 600000 | Ha idleTimeout+1 másodperc > maxLifetime és maxLifetime >0, akkor visszaáll 0-ra; Ha idleTimeout!=0 és kevesebb mint 10 másodperc, akkor visszaállítják 10 másodpercre | | LeakDetection Threshold | 0 | 0 | Ha ez nagyobb, mint 0, és nem egységteszt, akkor továbbá úgy ítélik meg, hogy (leakDetectionThreshold < SECONDS.toMillis(2) vagy (leakDetectionThreshold > maxLifetime && maxLifetime > 0) nullára lesz visszaállítva. Vagyis, ha ez hatályba lép, annak >0-nak kell lennie, és nem lehet kevesebb mint 2 másodperc, és amikor maxLifetime > 0 óra nem lehet nagyobb, mint maxLifetime | | initializationFailTimeout | 1 | 1 | - | | isAutoCommit | true | true | - | | isReadOnly | false | Fasle | - | | isAllowPoolSuspension | false | false | - | | isIsolateInternalQueries | false | false | - | | isRegisterMbeans | false | false | - | | lezárt | false | true | Ez a zászló a futtatás kezdete után érvényes, jelezve, hogy a módosítás már nem fut | | PoolName | nulla | HikariPool-1 | - | | katalógus | nulla | nulla | - | | connectionInitSql | nulla | nulla | - | | connectionTestQuery | nulla | nulla | - | | dataSourceClassName | nulla | nulla | - | | séma | nulla | nulla | - | | transactionIsolationName | nulla | nulla | - | | adatforrás | nulla | nulla | - | | dataSourceProperties | {} | {} | - | | threadFactory | nulla | nulla | - | | scheduledExecutor | nulla | nulla | - | | metricsTrackerFactory | nulla | nulla | - | | metricRegistry | nulla | nulla | - | | healthCheckRegistry | nulla | nulla | - | | healthCheckProperties | {} | {} | - |
Stresszteszt során az alkalmazás a következő hibákat jelentheti:
Ok: org.springframework.jdbc.CannotGetJdbcConnectionException: Nem sikerült elérni a JDBC Connection-t; a beágyazott kivétel java.sql.SQLTransientConnectionException: HikariPool-1 – Kapcsolat nem elérhető, a kérés időkorlátja 30000 ms után. at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82) at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80) at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) az org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) címen az org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) címen at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) címen az org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) címen a org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) címen at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) a com.sun.proxy.$Proxy 224.query címen (ismeretlen forrás) az org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) címen ... 114 további Okta: java.sql.SQLTransientConnectionException: HikariPool-1 – Kapcsolat nem elérhető, a kérés 30000 ms után időzített. at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695) a com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197) címen a com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162) címen at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128) at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116) at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79) ... 126 további
Hiba:Nem sikerült megszerezni a JDBC Connection-t; beágyazott kivétel java.sql.SQLTransientConnectionException: HikariPool-1 – Kapcsolat nem elérhető, a kérés időlezárva 30000ms után.
A vezérlő a HikariDataSource konfigurációs interfész kódját a következőképpen adja ki:
Optimalizáljuk a sémát, növeljük a szálak maximális számát és növeljük az üresen tartandó kapcsolatok számát, valamint módosítsuk a application.yml konfigurációt az alábbiak szerint:
(Vége)
|