Verzia Spring-Boot-2.0.0-M1 mení predvolený databázový connection pool z tomcat jdbc pool na hikari a pri spustení Spring Boot aplikácie konzola generuje nasledujúce
2021-11-25 14:48:09.429 INFO 22236 --- [ hlavný ] com.zaxxer.hikari.HikariDataZdroj : HikariPool-1 - Začiatok... 2021-11-25 14:48:09.813 INFO 22236 --- [hlavné] com.zaxxer.hikari.HikariDataZdroj: HikariPool-1 - Začiatok dokončený. Predvolené hodnoty pre predvolenú konfiguráciu Hikari sú nasledovné:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":180000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":60000}
| meno | Štandardy konštruktora | Predvolená konfigurácia je hodnota po validate | validatereset | | minIdle | -1 | 10 | minIdle<0 alebo minIdle>maxPoolSize, sa resetuje na maxPoolSize | | maxPoolSize | -1 | 10 | Ak je maxPoolSize menšia ako 1, resetuje sa. Keď sa minIdle<=0 resetuje na DEFAULT_POOL_SIZE, je to 10; Ak minIdle>0, resetuje sa na hodnotu minIdle | | maxLifetime | MINUTES.toMillis(30) = 1800000 | 1800000 | Ak to nie je rovné 0 a menej ako 30 sekúnd, vráti sa späť na 30 minút | | connectionTimeout | SECONDS.toMillis(30) = 30000 | 30000 | Ak je to menej ako 250 ms, vráti sa späť na 30 sekúnd | | validationTimeout | SECONDS.toMillis(5) = 5000 | 5000 | Ak je to menej ako 250 ms, resetuje sa späť na 5 sekúnd | | loginTimeout | 10 | 30 | Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), čo je maximum connectionTimeout+500ms na prepočet sekúnd na celok a 1 | | idleTimeout | MINUTES.toMillis(10) = 600000 | 600000 | Ak idleTimeout+1 sekunda > maxLifetime a maxLifetime >0, resetuje sa na 0; Ak idleTimeout!=0 a menej ako 10 sekúnd, resetuje sa na 10 sekúnd | | leakDetectionThreshold | 0 | 0 | Ak je väčšia ako 0 a nie je jednotkovým testom, ďalej sa hodnotí, že (leakDetectionThreshold < SECONDS.toMillis(2) alebo (leakDetectionThreshold > maxLifetime & maxLifetime > 0) sa resetuje na 0. To znamená, že ak má nadobudnúť účinok, musí byť >0, nesmie byť kratšia ako 2 sekundy, a keď maxLifetime > 0 hodín nemôže byť väčšie ako maxLifetime | | Timeout inicializácieZlyhania | 1 | 1 | - | | isAutoCommit | true | true | - | | isReadOnly | false | Fasle | - | | isAllowPoolSuspension | false | false | - | | isIsolateInternalQueries | false | false | - | | isRegisterMbeans | false | false | - | | utesnený | false | true | Tento príznak je pravdivý po začiatku behu, čo znamená, že úprava už neprebieha | | poolNázov | nula | HikariPool-1 | - | | katalóg | nula | nula | - | | connectionInitSql | nula | nula | - | | connectionTestQuery | nula | nula | - | | dataSourceClassName | nula | nula | - | | schéma | nula | nula | - | | transactionIsolationName | nula | nula | - | | dataSource | nula | nula | - | | dataSourceProperties | {} | {} | - | | threadFactory | nula | nula | - | | scheduledExecutor | nula | nula | - | | metricsTrackerFactory | nula | nula | - | | metricRegistry | nula | nula | - | | healthCheckRegistry | nula | nula | - | | healthCheckProperties | {} | {} | - |
Pri vykonávaní záťažového testu môže aplikácia hlásiť nasledujúce chyby:
Spôsobené: org.springframework.jdbc.CannotGetJdbcConnectionException: Nepodarilo sa získať JDBC pripojenie; vnorená výnimka je java.sql.SQLTransientConnectionException: HikariPool-1 - Pripojenie nie je dostupné, požiadavka vypršala po 30000ms. 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) 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) na org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) na com.sun.proxy.$Proxy 224.query(Neznámy zdroj) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) ... Ďalších 114 Spôsobené: java.sql.SQLTransientConnectionException: HikariPool-1 - Pripojenie nie je dostupné, požiadavka vypršala po 30000ms. at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695) na com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197) na com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162) 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) ... Ešte 126
Chyba:Nepodarilo sa mu získať JDBC Connection; vnorená výnimka je java.sql.SQLTransientConnectionException: HikariPool-1 - Pripojenie nie je dostupné, požiadavka vypršala po 30000 ms.
Kontrolér výstupne odosiela konfiguračný kód rozhrania HikariDataSource nasledovne:
Optimalizujte schému, zvýšte maximálny počet vlákien a zvýšte počet pripojení držaných v nečinnosti, a upravte konfiguráciu application.yml nasledovne:
(Koniec)
|