Spring-Boot-2.0.0-M1 versija maina noklusējuma datu bāzes savienojuma baseinu no tomcat jdbc pool uz hikari, un, palaižot spring boot lietojumprogrammu, konsole izvada šādu
2021-11-25 14:48:09.429 INFO 22236 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Sākot... 2021-11-25 14:48:09.813 INFO 22236 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Sākums pabeigts. Hikari noklusējuma konfigurācijas noklusējuma vērtības ir šādas:
{"savienojuma-taimauts":30000,"maksimālais-pūla-lielums":10,"maksimālais kalpošanas laiks":1800000,"minimums-dīkstāve":10,"validācijas-taimauts":5000,"dīkstāves taimauts":600000}
| vārds | Konstruktora noklusējumi | Noklusējuma konfigurācija ir vērtība pēc validācijas | validatereset | | minIdle | -1 | 10 | minIdle<0 vai minIdle>maxPoolSize, tas tiek atiestatīts uz maxPoolSize | | maxPoolSize | -1 | 10 | Ja maxPoolSize ir mazāks par 1, tas tiek atiestatīts. Kad minIdle<=0 ir atiestatīts uz DEFAULT_POOL_SIZE, tas ir 10; Ja minIdle>0, tiek atiestatīta vērtība minIdle | | maksimālais kalpošanas laiks | MINŪTES.uzMillis(30) = 1800000 | 1800000 | Ja tas nav vienāds ar 0 un mazāks par 30 sekundēm, tas tiks atiestatīts uz 30 minūtēm | | savienojuma taimauts | SEKUNDES.uzMillis(30) = 30000 | 30000 | Ja tas ir mazāks par 250 ms, tas tiek atiestatīts uz 30 sekundēm | | validationTimeout | SEKUNDES.uzMillis(5) = 5000 | 5000 | Ja tas ir mazāks par 250 ms, tas tiek atiestatīts uz 5 sekundēm | | pieteikšanāsTaimauts | 10 | 30 | Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), kas ir maksimālais connectionTimeout+500ms, lai pārvērstu sekunžu skaitu uz veselu un 1 | | dīkstāves taimauts | MINŪTES.uzMillis(10) = 600000 | 600000 | Ja idleTimeout+1 sekunde > maxLifetime un maxLifetime >0, tas tiks atiestatīts uz 0; Ja idleTimeout!=0 un ir mazāks par 10 sekundēm, tas tiek atiestatīts uz 10 sekundēm | | noplūdes noteikšanas slieksnis | 0 | 0 | Ja tas ir lielāks par 0 un nav vienības tests, tālāk tiek spriests, ka (leakDetectionThreshold < SECONDS.toMillis(2) vai (leakDetectionThreshold > maxLifetime && maxLifetime > 0) tiks atiestatīts uz 0. Tas ir, ja tas stājas spēkā, tam jābūt >0, un tas nevar būt mazāks par 2 sekundēm, un kad maxLifetime > 0 stundas nevar būt ilgākas par maxLifetime | | initializationFailTimeout | 1 | 1 | - | | isAutoCommit | true | true | - | | ir tikai lasāms | false | Fasle | - | | isAllowPoolSuspension | false | false | - | | isIsolateInternalQueries | false | false | - | | isRegisterMbeans | false | false | - | | Noslēgts | false | true | Šis karodziņš ir patiess pēc palaišanas sākuma, norādot, ka modifikācija vairs nedarbojas | | poolName | nulle | HikariPool-1 | - | | Katalogu | nulle | nulle | - | | savienojumsInitSQL | nulle | nulle | - | | connectionTestQuery | nulle | nulle | - | | dataSourceClassName | nulle | nulle | - | | Shēmas | nulle | nulle | - | | transactionIsolationName | nulle | nulle | - | | datu avots | nulle | nulle | - | | dataSourceProperties | {} | {} | - | | vītņu rūpnīca | nulle | nulle | - | | plānotais izpildītājs | nulle | nulle | - | | metricsTrackerFactory | nulle | nulle | - | | metricRegistry | nulle | nulle | - | | healthCheckRegistry | nulle | nulle | - | | healthCheckProperties | {} | {} | - |
Veicot stresa testu, lietojumprogramma var ziņot par šādām kļūdām:
Izraisījis: org.springframework.jdbc.CannotGetJdbcConnectionException: neizdevās iegūt JDBC savienojumu; ligzdotais izņēmums ir java.sql.SQLTransientConnectionException: HikariPool-1 — savienojums nav pieejams, pieprasījuma taimauts beidzas pēc 30000 ms. vietnē org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82) vietnē org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80) vietnē org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) vietnē com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) vietnē org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) vietnē com.sun.proxy.$Proxy 224.query(Nezināms avots) org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) ... Vēl 114 Cēlonis: java.sql.SQLTransientConnectionException: HikariPool-1 - savienojums nav pieejams, pieprasījuma taimauts pēc 30000 ms. vietnē com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695) vietnē com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197) vietnē com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162) vietnē com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128) vietnē org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) vietnē org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116) vietnē org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79) ... Vēl 126
Kļūda:Neizdevās iegūt JDBC savienojumu; ligzdotais izņēmums ir java.sql.SQLTransientConnectionException: HikariPool-1 - savienojums nav pieejams, pieprasījuma taimauts pēc 30000 ms.
Kontrolieris izvada HikariDataSource konfigurācijas interfeisa kodu šādi:
Optimizējiet shēmu, palieliniet maksimālo pavedienu skaitu un palieliniet dīkstāvē esošo savienojumu skaitu un modificējiet application.yml konfigurāciju šādi:
(Beigas)
|