Spring-Boot-2.0.0-M1 sürümü, varsayılan veritabanı bağlantı havuzunu tomcat jdbc havuzundan hikari'ye değiştirir ve spring boot uygulamasını çalıştırırken konsol aşağıdaki çıktıyı verir
2021-11-25 14:48:09.429 INFO 22236 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Başlatılıyor... 2021-11-25 14:48:09.813 INFO 22236 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Başlatma tamamlandı. Hikari'nin varsayılan konfigürasyonu için varsayılan değerler şunlardır:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":1800000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":600000}
| ad | Üretici varsayılan hataları | Varsayılan yapılandırma, doğrulamadan sonraki değerdir. | validatereset | | minIdle | -1 | 10 | minIdle<0 veya minIdle>maxPoolSize, maxPoolSize'e sıfırlanır | | maxPoolSize | -1 | 10 | MaxPoolSize 1'den küçükse, sıfırlanır. minIdle<=0 DEFAULT_POOL_SIZE'a sıfırlandığında 10'dur; minIdle>0 ise, minIdle değerine sıfırlanır | | maxLifetime | DAKIKALAR.Millis(30) = 1800000 | 1800000 | 0 değilse ve 30 saniyeden kısa ise, tekrar 30 dakikaya sıfırlanır | | connectionTimeout | SECONDS.toMillis(30) = 30000 | 30000 | 250 ms'den küçükse, 30 saniyeye geri sıfırlanır | | doğrulamaZaman Aşımı | SECONDS.toMillis(5) = 5000 | 5000 | 250 ms'den azsa, tekrar 5 saniyeye sıfırlanır | | loginTimeout | 10 | 30 | Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), bu da connectionTimeout+500ms'nin maksimum sınırıdır ve saniye sayısını tam ve 1'e dönüştürmek için | | idleTimeout | DAKIKALAR.toMillis(10) = 600000 | 600000 | idleTimeout+1 saniye > maxLifetime ve maxLifetime >0 olursa, sıfırlanır; idleTimeout!=0 ve 10 saniyeden azsa, 10 saniyeye sıfırlanır | | sızıntıAlgılamaEşiği | 0 | 0 | 0'dan büyükse ve bir birim testi değilse, ayrıca (leakDetectionThreshold < SECONDS.toMillis(2) veya (leakDetectionThreshold > maxLifetime && maxLifetime > 0) sıfırlanacağı da değerlendirilir. Yani, bu işlem etkili olacaksa >0 olmalı ve 2 saniyeden az olamaz, maxLifetime ise > 0 saat, maxLifetime'dan büyük olamaz. | | initializationFailTimeout | 1 | 1 | - | | isAutoCommit | true | true | - | | isReadOnly | false | Fasle | - | | isAllowPoolSuspension | false | false | - | | isIsolateInternalQueries | false | false | - | | isRegisterMbeans | false | false | - | | Mühürlü | false | true | Bu bayrak çalışma başladıktan sonra geçerlidir ve modifikasyonun artık çalışmadığını gösterir | | havuzAdı | sıfır | HikariHavuz-1 | - | | katalog | sıfır | sıfır | - | | connectionInitSql | sıfır | sıfır | - | | connectionTestQuery | sıfır | sıfır | - | | dataSourceClassName | sıfır | sıfır | - | | şema | sıfır | sıfır | - | | transactionIsolationName | sıfır | sıfır | - | | dataSource | sıfır | sıfır | - | | dataSourceProperties | {} | {} | - | | threadFactory | sıfır | sıfır | - | | scheduledExecutor | sıfır | sıfır | - | | metriklerTrackerFactory | sıfır | sıfır | - | | metricRegistry | sıfır | sıfır | - | | healthCheckRegistry | sıfır | sıfır | - | | healthCheckProperties | {} | {} | - |
Stres testi yapılırken, uygulama aşağıdaki hataları bildirebilir:
Nedeni: org.springframework.jdbc.CannotGetJdbcConnectionException: JDBC Bağlantısı alınamadı; iç içe istisna java.sql.SQLTransientConnectionException: HikariPool-1 - Bağlantı mevcut değil, istek 30000ms'ten sonra zaman aşımına dayandı. org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82) adresinde org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80) adresinde org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) adresinde org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) adresinde org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) adresinde org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) adresinde org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) adresinde org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) adresinde org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) adresinde com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) adresinde org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) adresinde com.sun.proxy.$Proxy 224.query(bilinmeyen kaynak) adresinde at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) ... 114 tane daha Nedeni: java.sql.SQLTransientConnectionException: HikariPool-1 - Bağlantı mevcut değil, istek 30000ms'den sonra zaman aşımına dayandı. at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695) com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197) adresinde com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162) adresinden at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128) org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) adresinde org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116) adresinde org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79) adresinde ... 126 tane daha
Hata:JDBC Bağlantısı'nı elde edememiştir; iç içe istisna java.sql.SQLTransientConnectionException: HikariPool-1 - Bağlantı mevcut değil, istek 30000ms'den sonra zaman aşımına dayandı.
Kontrolör, HikariDataSource yapılandırma arayüzü kodunu aşağıdaki şekilde çıkarır:
Şemayı optimize edin, maksimum iş parçacıklarını artırın ve boşta tutulan bağlantı sayısını artırın, application.yml yapılandırmasını aşağıdaki şekilde değiştirin:
(Son)
|