|
|
Veröffentlicht am 25.11.2021, 14:55:15
|
|
|
|

Die Version Spring-Boot-2.0.0-M1 ändert den Standard-Datenbankverbindungspool vom tomcat-jdbc-Pool zu hikari, und beim Ausführen der Spring-Boot-Anwendung gibt die Konsole Folgendes aus.
2021-11-25 14:48:09.429 INFO 22236 --- [ main] com.zaxxer.hikari.HikariDataQuelle: HikariPool-1 - Start... 2021-11-25 14:48:09.813 INFO 22236 --- [main] com.zaxxer.hikari.HikariDataQuelle: HikariPool-1 - Start abgeschlossen. Die Standardwerte für Hikaris Standardkonfiguration sind wie folgt:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":1800000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":600000}
| Name | Konstruktor-Standardwerte | Die Standardkonfiguration ist der Wert nach dem Validieren | validatereset | | minIdle | -1 | 10 | minIdle<0 oder minIdle>maxPoolSize wird auf maxPoolSize zurückgesetzt | | maxPoolSize | -1 | 10 | Wenn maxPoolSize kleiner als 1 ist, wird es zurückgesetzt. Wenn minIdle<=0 auf DEFAULT_POOL_SIZE zurückgesetzt wird, beträgt es 10; Wenn minIdle>0, setzt er sich auf den Wert minIdle zurück | | maxLifetime | MINUTES.toMillis(30) = 18000000 | 1800000 | Wenn sie nicht gleich 0 und weniger als 30 Sekunden ist, wird sie auf 30 Minuten zurückgesetzt | | connectionTimeout | SECONDS.toMillis(30) = 30.000 | 30000 | Ist es weniger als 250 ms, wird es auf 30 Sekunden zurückgesetzt | | ValidierungTimeout | SECONDS.toMillis(5) = 5000 | 5000 | Ist es weniger als 250 ms, wird es auf 5 Sekunden zurückgesetzt | | loginTimeout | 10 | 30 | Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), was das Maximum von connectionTimeout+500ms ist, um die Anzahl der Sekunden in das Gesamt und 1 umzuwandeln | | idleTimeout | MINUTES.toMillis(10) = 600000 | 600000 | Wenn idleTimeout+1 Sekunde maxLifetime und maxLifetime >0 >, wird er auf 0 zurückgesetzt; Wenn idleTimeout!=0 und weniger als 10 Sekunden, wird es auf 10 Sekunden zurückgesetzt. | | LeakDetectionThreshold | 0 | 0 | Wenn er größer als 0 ist und kein Einheitstest, wird weiter beurteilt, dass (leakDetectionThreshold < SECONDS.toMillis(2) oder (leakDetectionThreshold > maxLifetime & maxLifetime > 0) auf 0 zurückgesetzt wird. Das heißt, wenn es wirksam werden soll, muss es bei >0 sein, und es darf nicht weniger als 2 Sekunden sein, und wenn maxLifetime > 0 Stunden können nicht größer als maxLifetime sein | | initializationFailTimeout | 1 | 1 | - | | isAutoCommit | true | true | - | | isReadOnly | false | fasle | - | | isAllowPoolSuspension | false | false | - | | isIsolateInternalQueries | false | false | - | | isRegisterMbeans | false | false | - | | versiegelt | false | true | Diese Flagge gilt nach Beginn des Laufs und zeigt an, dass die Modifikation nicht mehr läuft | | poolName | null | HikariPool-1 | - | | Katalog | null | null | - | | connectionInitSql | null | null | - | | connectionTestQuery | null | null | - | | dataSourceClassName | null | null | - | | Schema | null | null | - | | transactionIsolationName | null | null | - | | DatenQuelle. | null | null | - | | dataQuelleEigenschaften | {} | {} | - | | threadFactory | null | null | - | | geplanter Testamentsvollstrecker | null | null | - | | metricsTrackerFactory | null | null | - | | metricRegistry | null | null | - | | healthCheckRegistry | null | null | - | | healthCheckEigenschaften | {} | {} | - |
Bei der Durchführung eines Stresstests kann die Anwendung folgende Fehler melden:
Verursacht von: org.springframework.jdbc.CannotGetJdbcConnectionException: Konnte die JDBC-Verbindung nicht erhalten; Die verschachtelte Ausnahme ist java.sql.SQLTransientConnectionException: HikariPool-1 – Verbindung ist nicht verfügbar, Anfrage ist nach 30000 ms zeitlich abgelaufen. bei org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82) bei org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80) at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) at 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) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) bei com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) unter com.sun.proxy.$Proxy 224.query(Unbekannte Quelle) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) ... 114 weitere Verursacht durch: java.sql.SQLTransientConnectionException: HikariPool-1 - Verbindung ist nicht verfügbar, Anfrage läuft nach 30000 ms im Timeout. bei com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695) bei com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197) bei com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162) unter com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128) bei org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116) bei org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79) ... 126 weitere
Fehler:Es gelang nicht, JDBC-Verbindung zu erhalten; Die verschachtelte Ausnahme ist java.sql.SQLTransientConnectionException: HikariPool-1 - Verbindung ist nicht verfügbar, Anfrage wird nach 30000 ms abgelaufen.
Der Controller gibt den HikariDataSource-Konfigurationsschnittstellencode wie folgt aus:
Optimieren Sie das Schema, erhöhen Sie die maximale Anzahl der Threads und erhöhen Sie die Anzahl der Verbindungen, die im Leerlauf gehalten werden, und ändern Sie die application.yml-Konfiguration wie folgt:
(Ende)
|
Vorhergehend:Der Unterschied zwischen getLastRowNum() und getLastCellNum() in POIsNächster:Vergleich der Testwerkzeuge LoadRunner und Jmeter
|