Versi Spring-Boot-2.0.0-M1 mengubah kumpulan koneksi database default dari tomcat jdbc pool ke hikari, dan saat menjalankan aplikasi spring boot, konsol menghasilkan yang berikut
2021-11-25 14:48:09.429 INFO 22236 --- [ utama] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Memulai... 2021-11-25 14:48:09.813 INFO 22236 --- [ utama] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Mulai selesai. Nilai default untuk konfigurasi default Hipari adalah sebagai berikut:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":1800000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":600000}
| Nama | Default konstruktor | Konfigurasi default adalah nilai setelah validasi | validatereset | | minIdle | -1 | 10 | minIdle<0 atau minIdle>maxPoolSize, diatur ulang ke maxPoolSize | | maxUkuran kolam renang | -1 | 10 | Jika maxPoolSize kurang dari 1, itu diatur ulang. Ketika minIdle<=0 diatur ulang ke DEFAULT_POOL_SIZE, itu adalah 10; Jika minIdle>0, itu diatur ulang ke nilai minIdle | | MaxLifetime | MENIT.keMilis(30) = 1800000 | 1800000 | Jika tidak sama dengan 0 dan kurang dari 30 detik, itu akan diatur ulang kembali ke 30 menit | | koneksiBatas waktu | DETIK.keMilis(30) = 30000 | 30000 | Jika kurang dari 250 ms, reset kembali ke 30 detik | | validationBatas waktu | DETIK.keMilis(5) = 5000 | 5000 | Jika kurang dari 250 ms, reset kembali ke 5 detik | | loginBatas waktu | 10 | 30 | Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), yang merupakan maksimum connectionTimeout+500ms untuk mengonversi jumlah detik menjadi keseluruhan dan 1 | | Batas waktu idleOut | MENIT.keMilis(10) = 600000 | 600000 | Jika idleTimeout+1 detik > maxLifetime dan maxLifetime >0, itu akan diatur ulang ke 0; Jika idleTimeout!=0 dan kurang dari 10 detik, itu diatur ulang ke 10 detik | | ambang batas bocorDeteksi bocor | 0 | 0 | Jika lebih besar dari 0 dan bukan pengujian unit, selanjutnya dinilai bahwa (leakDetectionThreshold < SECONDS.toMillis(2) atau (leakDetectionThreshold > maxLifetime && maxLifetime > 0), akan diatur ulang ke 0. Artinya, jika akan diterapkan, itu harus >0, dan tidak boleh kurang dari 2 detik, dan ketika maxLifetime > 0 jam tidak boleh lebih besar dari maxLifetime | | inisialisasiFailTimeout | 1 | 1 | - | | isAutoCommit | true | true | - | | isReadOnly | false | fasle | - | | isAllowPoolSuspension | false | false | - | | isIsolateInternalQueries | false | false | - | | isRegisterMbeans | false | false | - | | Disegel | false | true | Bendera ini benar setelah eksekusi dimulai, menunjukkan bahwa modifikasi tidak lagi berjalan | | poolNama | nol | Kolam Renang Hikari-1 | - | | katalog | nol | nol | - | | koneksiInitSql | nol | nol | - | | connectionTestQuery | nol | nol | - | | dataSourceClassName | nol | nol | - | | skema | nol | nol | - | | transactionIsolationName | nol | nol | - | | Sumber data | nol | nol | - | | dataSourceProperties | {} | {} | - | | Pabrik benang | nol | nol | - | | scheduledExecutor | nol | nol | - | | metricsPabrik Pelacak | nol | nol | - | | metricRegistry | nol | nol | - | | kesehatanPeriksaRegistri | nol | nol | - | | healthCheckProperties | {} | {} | - |
Saat melakukan uji stres, aplikasi dapat melaporkan kesalahan berikut:
Disebabkan oleh: org.springframework.jdbc.CannotGetJdbcConnectionException: Gagal mendapatkan Koneksi JDBC; pengecualian berlapis adalah java.sql.SQLTransientConnectionException: HikariPool-1 - Koneksi tidak tersedia, waktu permintaan habis setelah 30000 milidetik. di org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82) di org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80) di org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) di org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) di org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) di org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) di org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) di org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) di org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) di com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) di org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) di com.sun.proxy.$Proxy 224.query(Sumber Tidak Dikenal) di org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) ... 114 lainnya Disebabkan oleh: java.sql.SQLTransientConnectionException: HikariPool-1 - Koneksi tidak tersedia, waktu permintaan habis setelah 30000ms. di com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695) di com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197) di com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162) di com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128) di org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) di org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116) di org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79) ... 126 lainnya
Kesalahan:Gagal mendapatkan Koneksi JDBC; pengecualian berlapis adalah java.sql.SQLTransientConnectionException: HikariPool-1 - Koneksi tidak tersedia, waktu permintaan habis setelah 30000ms.
Pengontrol mengeluarkan kode antarmuka konfigurasi HikariDataSource sebagai berikut:
Optimalkan skema, tingkatkan jumlah utas maksimum dan tingkatkan jumlah koneksi yang ditahan diam, dan ubah konfigurasi application.yml sebagai berikut:
(Akhir)
|