Različica Spring-Boot-2.0.0-M1 spremeni privzeti bazen povezav baze podatkov iz tomcat jdbc pool v hikari, in ob zagonu aplikacije spring boot konzola izpiše naslednje
2021-11-25 14:48:09.429 INFO 22236 --- [ glavno] com.zaxxer.hikari.HikariDataVir : HikariPool-1 - Začetek... 2021-11-25 14:48:09.813 INFO 22236 --- [ glavno] com.zaxxer.hikari.HikariDataVir : HikariPool-1 - Začetek zaključen. Privzete vrednosti za Hikarijevo privzeto konfiguracijo so naslednje:
{"timeout":30000,"maximum-pool-size":10,"max-lifetime":180000,"minimum-neaktivno":10,"validation-timeout":5000,"idle-timeout":60000}
| ime | Privzete nastavitve konstruktorja | Privzeta konfiguracija je vrednost po validaciji | validatereset | | minIdle | -1 | 10 | minIdle<0 ali minIdle>maxPoolSize, se ponastavi na maxPoolSize | | maxPoolSize | -1 | 10 | Če je maxPoolSize manjši od 1, se ponastavi. Ko se minIdle<=0 ponastavi na DEFAULT_POOL_SIZE, je 10; Če je minIdle>0, se ponastavi na vrednost minIdle | | maxLifetime | MINUTES.toMillis(30) = 1800000 | 1800000 | Če ni enaka 0 in manj kot 30 sekund, se ponastavi nazaj na 30 minut | | povezavaTimeout | SECONDS.toMillis(30) = 30000 | 30000 | Če je manj kot 250 ms, se ponastavi nazaj na 30 sekund | | validationTimeout | SECONDS.toMillis(5) = 5000 | 5000 | Če je manj kot 250 ms, se ponastavi nazaj na 5 sekund | | loginTimeout | 10 | 30 | Math.max(1, (int) MILISECONDS.toSeconds(500L + connectionTimeout)), kar je največje število sekund za pretvorbo sekund v celotno in 1 | | IdleTimeout | MINUTES.toMillis(10) = 600000 | 600000 | Če idleTimeout+1 sekunda > maxLifetime in maxLifetime >0, se ponastavi na 0; Če je idleTimeout!=0 in manj kot 10 sekund, se ponastavi na 10 sekund | | leakDetectionThreshold | 0 | 0 | Če je večji od 0 in ni enotski test, se dodatno ocenjuje, da se (leakDetectionThreshold < SECONDS.toMillis(2) ali (leakDetectionThreshold > maxLifetime & maxLifetime > 0) ponastavi na 0. Torej, če naj bi se uvedel, mora biti >0, ne sme biti manj kot 2 sekundi, in ko maxLifetime > 0 ur ne more biti večje od maxLifetime | | ZačetnicaNeuspehČasovna omejitev | 1 | 1 | - | | isAutoCommit | true | true | - | | isReadOnly | false | Fasle | - | | isAllowPoolSuspension | false | false | - | | isIsolateInternalQueries | false | false | - | | isRegisterMbeans | false | false | - | | Zaprti | false | true | Ta zastavica velja po začetku teka, kar pomeni, da sprememba ni več v teku | | poolIme | Null | HikariPool-1 | - | | Katalog | Null | Null | - | | connectionInitSql | Null | Null | - | | connectionTestQuery | Null | Null | - | | dataSourceClassName | Null | Null | - | | Sheme | Null | Null | - | | transactionIsolationName | Null | Null | - | | dataSource | Null | Null | - | | dataSourceLastnosti | {} | {} | - | | threadFactory | Null | Null | - | | scheduledExecutor | Null | Null | - | | metricsTrackerFactory | Null | Null | - | | metricRegistry | Null | Null | - | | healthCheckRegistry | Null | Null | - | | healthCheckProperties | {} | {} | - |
Pri izvajanju stresnega testa lahko aplikacija poroča o naslednjih napakah:
Vzrok: org.springframework.jdbc.CannotGetJdbcConnectionException: Ni uspelo pridobiti JDBC povezave; gnezdena izjema je java.sql.SQLTransientConnectionException: HikariPool-1 - Povezava ni na voljo, zahteva je potekla po 30000 ms. 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) na org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) na org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) na org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) na org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) na org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) na org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) na com.sun.proxy.$Proxy 224.query(Neznani vir) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) ... še 114 Vzrok: java.sql.SQLTransientConnectionException: HikariPool-1 - Povezava ni na voljo, zahteva je potekla po 30000ms. na 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) na 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 126
Napaka:Ni uspelo pridobiti povezave JDBC; gnezdena izjema je java.sql.SQLTransientConnectionException: HikariPool-1 - Povezava ni na voljo, zahteva je potekla po 30000 ms.
Krmilnik izpiše konfiguracijsko vmesnično kodo HikariDataSource na naslednji način:
Optimizirajte shemo, povečajte največje število niti in povečajte število povezav, ki ostanejo neaktivne, ter spremenite konfiguracijo application.yml na naslednji način:
(Konec)
|