Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 9693|Antwoord: 1

[Bron] Spring Boot database-verbindingspool HikariPool-optimalisatie

[Link kopiëren]
Geplaatst op 25-11-2021 14:55:15 | | | |
De versie Spring-Boot-2.0.0-M1 verandert de standaard databaseverbindingspool van tomcat jdbc pool naar hikari, en bij het uitvoeren van de spring boot-applicatie geeft de console het volgende uit
2021-11-25 14:48:09.429 INFO 22236 --- [ hoofd] com.zaxxer.hikari.HikariDataBron: HikariPool-1 - Start...
2021-11-25 14:48:09.813 INFO 22236 --- [ hoofd] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start voltooid.

De standaardwaarden voor Hikari's standaardconfiguratie zijn als volgt:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":1800000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":600000}

naamConstructor-standaardenDe standaardconfiguratie is de waarde na validatevalidatereset
minIdle-110minIdle<0 of minIdle>maxPoolSize, wordt deze gereset naar maxPoolSize
maxPoolSize-110Als maxPoolSize kleiner is dan 1, wordt deze gereset. Wanneer minIdle<=0 wordt teruggezet naar DEFAULT_POOL_SIZE, is het 10; Als minIdle>0 wordt teruggezet naar de waarde van minIdle.
maxLifetimeMINUTES.toMillis(30) = 180000001800000Als het niet gelijk is aan 0 en minder dan 30 seconden, wordt het teruggezet naar 30 minuten
verbindingTime-outSECONDS.toMillis(30) = 30.00030000Als het minder dan 250 ms is, wordt het teruggezet naar 30 seconden
validatieTime-outSECONDS.toMillis(5) = 50005000Als het minder dan 250 ms is, wordt het teruggezet naar 5 seconden
loginTime-out1030Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), wat het maximum is van connectionTimeout+500ms om het aantal seconden om te zetten in het geheel en 1
idleTimeoutMINUTES.toMillis(10) = 600000600000Als idleTimeout+1 seconde maxLifetime en maxLifetime >0 >, wordt deze teruggezet naar 0; Als idleTimeout!=0 en minder dan 10 seconden, wordt deze teruggezet naar 10 seconden
LeakDetectionThreshold00Als het groter is dan 0 en geen eenheidstest, wordt verder beoordeeld dat (leakDetectionThreshold < SECONDS.toMillis(2) of (leakDetectionThreshold > maxLifetime & maxLifetime > 0) wordt teruggezet naar 0. Dat wil zeggen, als het effect moet worden, moet het >0 zijn, en mag het niet minder dan 2 seconden zijn, en wanneer maxLifetime > 0 uur kan niet groter zijn dan maxLifetime
initialisatieFailTimeout11-
isAutoCommittruetrue-
isAlleenLezenfalseFasle-
isAllowPoolSuspensionfalsefalse-
isIsolateInternalQueriesfalsefalse-
isRegisterMbeansfalsefalse-
VerzegeldfalsetrueDeze vlag is waar nadat de run is begonnen, wat aangeeft dat de wijziging niet meer actief is
poolNamenulHikariPool-1-
catalogusnulnul-
connectionInitSqlnulnul-
connectionTestQuerynulnul-
dataSourceClassNamenulnul-
schemanulnul-
transactionIsolationNamenulnul-
dataSourcenulnul-
dataSourceProperties{}{}-
threadFactorynulnul-
geplandeExecutornulnul-
metricsTrackerFactorynulnul-
metricRegistrynulnul-
healthCheckRegistrynulnul-
healthCheckEigenschappen{}{}-

Bij het uitvoeren van een stresstest kan de applicatie de volgende fouten rapporteren:

Veroorzaakt door: org.springframework.jdbc.CannotGetJdbcConnectionException: Niet in geslaagd JDBC-verbinding te verkrijgen; geneste uitzondering is java.sql.SQLTransientConnectionException: HikariPool-1 - Verbinding is niet beschikbaar, verzoek wordt na 30000ms getimed.
        op org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
        op org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80)
        op org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67)
        op 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)
        op com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)
        op org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)
        op com.sun.proxy.$Proxy 224.query(Onbekende bron)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
        ... Nog eens 114
Veroorzaakt door: java.sql.SQLTransientConnectionException: HikariPool-1 - Verbinding is niet beschikbaar, verzoek vertraagd na 30.000ms.
        op com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695)
        op com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197)
        op com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162)
        op com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)
        op org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158)
        op org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116)
        op org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
        ... Nog eens 126


Fout:Niet in geslaagd JDBC-verbinding te verkrijgen; geneste uitzondering is java.sql.SQLTransientConnectionException: HikariPool-1 - Verbinding is niet beschikbaar, verzoek wordt na 30000ms getimed.

De controller geeft de HikariDataSource-configuratie-interfacecode als volgt uit:

Optimaliseer het schema, verhoog het maximale aantal threads en verhoog het aantal inactieve verbindingen, en pas de application.yml configuratie als volgt aan:

(Einde)




Vorig:Het verschil tussen getLastRowNum() en getLastCellNum() in POI's
Volgend:Vergelijking van de testtools LoadRunner en Jmeter
Geplaatst op 14-12-2022 21:46:53 |
Leer leren
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com