La version Spring-Boot-2.0.0-M1 modifie le pool de connexion par défaut de la base de données de tomcat jdbc pool à hikari, et lors de l’exécution de l’application spring boot, la console affiche les éléments suivants
2021-11-25 14:48:09.429 INFOS 22236 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Démarrage... 2021-11-25 14:48:09.813 INFOS 22236 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Démarrage terminé. Les valeurs par défaut de la configuration par défaut de Hikari sont les suivantes :
{"connexion-timeout » :30000,"maximum-pool-size » :10,"max-lifetime » :180000,"minimum-idle » :10,"validation-timeout » :5000,"idle-timeout » :60000}
| nom | Par défaut du constructeur | La configuration par défaut est la valeur après validation | validatereset | | minIntime | -1 | 10 | minIdle<0 ou minIdle>maxPoolSize, il est réinitialisé en maxPoolSize | | maxPoolSize | -1 | 10 | Si maxPoolSize est inférieur à 1, il est réinitialisé. Lorsque minIdle<=0 est réinitialisé à DEFAULT_POOL_SIZE, il est 10 ; Si minIdle>0, il se réinitialise à la valeur de minIdle | | maxLifetime | MINUTES.toMillis(30) = 1800000 | 1800000 | Si ce n’est pas égal à 0 et inférieur à 30 secondes, il sera réinitialisé à 30 minutes | | connexion Temps d’arrêt | SECONDS.toMillis(30) = 30000 | 30000 | Si c’est inférieur à 250 ms, il est réinitialisé à 30 secondes | | validationTimeout | SECONDS.toMillis(5) = 5000 | 5000 | Si c’est inférieur à 250 ms, il est réinitialisé à 5 secondes | | connexionTemps d’attente | 10 | 30 | Math.max(1, (int) MILLISECONDES.àSecondes(500L + connexionTimeout)), qui est le maximum de connexionTemps d’attente+500ms pour convertir le nombre de secondes en tout et 1 | | idleTimeout | MINUTES.toMillis(10) = 600000 | 600000 | Si le temps d’inactivité+1 seconde > maxLifetime et maxLifetime >0, il sera réinitialisé à 0 ; Si IdleTimeout !=0 et moins de 10 secondes, il est réinitialisé à 10 secondes | | SeuilDétection de fuite | 0 | 0 | Si c’est supérieur à 0 et qu’il n’est pas un test unitaire, on juge en outre que (leakDetectionThreshold < SECONDS.toMillis(2) ou (leakDetectionThreshold > maxLifetime & & maxLifetime > 0) sera réinitialisé à 0. C’est-à-dire que, pour qu’il entre en vigueur, il doit être >0, et il ne peut pas être inférieur à 2 secondes, et lorsque maxLifetime > 0 heure ne peut pas dépasser le maxDurée de vie | | initialisationFailDélai | 1 | 1 | - | | isAutoCommit | true | true | - | | isReadOnly | false | Fasle | - | | isAllowPoolSuspension | false | false | - | | isIsolateInternalQueries | false | false | - | | isRegisterMbeans | false | false | - | | scellé | false | true | Ce drapeau est vrai après le début de la course, indiquant que la modification n’est plus en cours d’exécution | | Nom de la piscine | zéro | HikariPool-1 | - | | catalogue | zéro | zéro | - | | connectionInitSQL | zéro | zéro | - | | connexionTestQuery | zéro | zéro | - | | dataSourceClassName | zéro | zéro | - | | schéma | zéro | zéro | - | | transactionIsolationName | zéro | zéro | - | | dataSource | zéro | zéro | - | | dataSourceProperties | {} | {} | - | | ThreadFactory | zéro | zéro | - | | Exécuteur programmé | zéro | zéro | - | | metricsTrackerFactory | zéro | zéro | - | | metricRegistry | zéro | zéro | - | | Registre de Contrôle de la Santé | zéro | zéro | - | | HealthCheckProperties | {} | {} | - |
Lors d’un test de résistance, l’application peut signaler les erreurs suivantes :
Causé par : org.springframework.jdbc.CannotGetJdbcConnectionException : Échec à obtenir la connexion JDBC ; exception imbriquée est java.sql.SQLTransientConnectionException : HikariPool-1 - La connexion n’est pas disponible, la requête expire après 30000 ms. at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java :82) sur org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java :80) sur org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java :67) at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java :337) sur 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) sur 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) sur com.sun.proxy.$Proxy 224.query(Source inconnue) sur org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java :151) ... 114 autres Causé par : java.sql.SQLTransientConnectionException : HikariPool-1 - La connexion n’est pas disponible, la requête expire après 30000 ms. sur com.zaxxer.hikari.pool.HikariPool.createTimeOutException(HikariPool.java :695) sur com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java :197) sur com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java :162) sur 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) ... 126 autres
Erreur:Échec à obtenir la connexion JDBC ; exception imbriquée est java.sql.SQLTransientConnectionException : HikariPool-1 - La connexion n’est pas disponible, la requête expire après 30000ms.
Le contrôleur affiche le code de configuration HikariDataSource comme suit :
Optimisez le schéma, augmentez le nombre maximal de threads et le nombre de connexions immobilisées, et modifiez la configuration application.yml comme suit :
(Fin)
|