Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 9693|Svare: 1

[Kilde] Spring Boot database-tilkoblingspool HikariPool-optimalisering

[Kopier lenke]
Publisert 25.11.2021 14:55:15 | | | |
Spring-Boot-2.0.0-M1-versjonen endrer standard databasetilkoblingspool fra tomcat jdbc pool til hikari, og når Spring Boot-applikasjonen kjøres, gir konsollen følgende
2021-11-25 14:48:09.429 INFO 22236 --- [hoved] com.zaxxer.hikari.HikariDatakilde: HikariPool-1 - Starter...
2021-11-25 14:48:09.813 INFO 22236 --- [hoved] com.zaxxer.hikari.HikariDatakilde: HikariPool-1 - Start fullført.

Standardverdiene for Hikaris standardkonfigurasjon er som følger:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":1800000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":600000}

navnKonstruktørstandardinnstillingerStandardkonfigurasjonen er verdien etter valideringvalidatereset
minIdle-110minIdle<0 eller minIdle>maxPoolSize, den settes til maxPoolSize
maxPoolSize-110Hvis maxPoolSize er mindre enn 1, blir den tilbakestilt. Når minIdle<=0 tilbakestilles til DEFAULT_POOL_SIZE, er den 10; Hvis minIdle>0, tilbakestilles den til verdien minIdle
maxLifetimeMINUTES.toMillis(30) = 18000001800000Hvis den ikke er lik 0 og mindre enn 30 sekunder, vil den bli tilbakestilt til 30 minutter
forbindelseTimeoutSECONDS.toMillis(30) = 3000030000Hvis det er under 250 ms, tilbakestilles det til 30 sekunder
valideringTimeoutSECONDS.toMillis(5) = 50005000Hvis det er under 250 ms, tilbakestilles det til 5 sekunder
loginTimeout1030Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), som er maksimumet for connectionTimeout+500ms for å konvertere antall sekunder til hele og 1
idleTimeoutMINUTES.toMillis(10) = 600000600000Hvis idleTimeout+1 sekund > maxLifetime og maxLifetime >0, vil den bli tilbakestilt til 0; Hvis idleTimeout!=0 og mindre enn 10 sekunder, tilbakestilles den til 10 sekunder
lekkasjeDeteksjonTerskel00Hvis det er større enn 0 og ikke en enhetstest, vurderes det videre at (leakDetectionThreshold < SECONDS.toMillis(2) eller (leakDetectionThreshold > maxLifetime & maxLifetime > 0) vil bli tilbakestilt til 0. Det vil si, hvis det skal tre i kraft, må det være >0, og det kan ikke være mindre enn 2 sekunder, og når maxLifetime > 0 timer kan ikke være større enn maxLifetime
initializationFailTimeout11-
isAutoCommittruetrue-
isReadOnlyfalseFasle-
isAllowPoolSuspensionfalsefalse-
isIsolateInternalQueriesfalsefalse-
isRegisterMbeansfalsefalse-
ForsegletfalsetrueDette flagget gjelder etter at kjøringen starter, noe som indikerer at modifikasjonen ikke lenger kjører
poolNamenullHikariPool-1-
katalognullnull-
connectionInitSqlnullnull-
connectionTestQuerynullnull-
dataSourceClassNamenullnull-
skjemanullnull-
transactionIsolationNamenullnull-
datakildenullnull-
dataKildeEgenskaper{}{}-
threadFactorynullnull-
planlagtEksekutornullnull-
metricsTrackerFactorynullnull-
metricRegistrynullnull-
healthCheckRegistrynullnull-
healthCheckEgenskaper{}{}-

Når man utfører en stresstest, kan applikasjonen rapportere følgende feil:

Forårsaket av: org.springframework.jdbc.CannotGetJdbcConnectionException: Mislykkedes i å hente JDBC Connection; det nestede unntaket er java.sql.SQLTransientConnectionException: HikariPool-1 - Tilkobling er ikke tilgjengelig, forespørsel tidsutgikk etter 30000 ms.
        på org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
        på org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80)
        på 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)
        på com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)
        på org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)
        på com.sun.proxy.$Proxy 224.query(ukjent kilde)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
        ... 114 til
Forårsaket av: java.sql.SQLTransientConnectionException: HikariPool-1 - Tilkobling er ikke tilgjengelig, forespørsel går ut etter 30000 ms.
        på com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695)
        på com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197)
        på com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162)
        på com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)
        på org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158)
        at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116)
        på org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
        ... 126 til


Feil:Mislyktes i å skaffe JDBC-forbindelsen; det nestede unntaket er java.sql.SQLTransientConnectionException: HikariPool-1 - Tilkobling er ikke tilgjengelig, forespørsel går ut etter 30000 ms.

Kontrolleren gir ut HikariDataSource-konfigurasjonsgrensesnittkoden som følger:

Optimaliser ordningen, øk maksimalt antall tråder og øk antall tilkoblinger som holdes inaktive, og modifiser application.yml-konfigurasjonen som følger:

(Slutt)




Foregående:Forskjellen mellom getLastRowNum() og getLastCellNum() i POI-er
Neste:Sammenligning av testverktøyene LoadRunner og Jmeter
Publisert 2022-12-14 21:46:53 |
Lær å lære
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com