Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 9693|Svar: 1

[Kilde] Spring Boot database-forbindelsespool HikariPool-optimering

[Kopier link]
Opslået den 25-11-2021 14:55:15 | | | |
Spring-Boot-2.0.0-M1-versionen ændrer standard databaseforbindelsespoolen fra tomcat jdbc pool til hikari, og når spring boot-applikationen køres, udsender konsollen følgende
2021-11-25 14:48:09.429 INFO 22236 --- [ main] com.zaxxer.hikari.HikariDatakilde: HikariPool-1 - Starter...
2021-11-25 14:48:09.813 INFO 22236 --- [main] com.zaxxer.hikari.HikariDataKilde: HikariPool-1 - Start afsluttet.

Standardværdierne for Hikaris standardkonfiguration er som følger:
{"forbindelses-timeout":30000,"maximum-pool-size":10,"max-lifetime":1800000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":600000}

NavnKonstruktør-standardindstillingerStandardkonfigurationen er værdien efter validatevalidatereset
minIdle-110minIdle<0 eller minIdle>maxPoolSize, nulstilles til maxPoolSize
maxPoolSize-110Hvis maxPoolSize er mindre end 1, nulstilles den. Når minIdle<=0 nulstilles til DEFAULT_POOL_SIZE, er det 10; Hvis minIdle>0, nulstilles den til værdien minIdle
maxLifetimeMINUTES.toMillis(30) = 180000001800000Hvis den ikke er lig med 0 og mindre end 30 sekunder, vil den blive nulstillet til 30 minutter
forbindelseTimeoutSECONDS.toMillis(30) = 3000030000Hvis det er under 250 ms, nulstilles det til 30 sekunder
valideringTimeoutSECONDS.toMillis(5) = 50005000Hvis den er under 250 ms, nulstilles den til 5 sekunder
loginTimeout1030Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), hvilket er maksimumet af connectionTimeout+500ms for at konvertere antallet af sekunder til hele og 1
idleTimeoutMINUTES.toMillis(10) = 6000000600000Hvis idleTimeout+1 sekund > maxLifetime og maxLifetime >0, vil den blive nulstillet til 0; Hvis idleTimeout!=0 og mindre end 10 sekunder, nulstilles den til 10 sekunder
LeakDetectionThreshold00Hvis den er større end 0 og ikke en enhedstest, vurderes det yderligere, at (leakDetectionThreshold < SECONDS.toMillis(2) eller (leakDetectionThreshold > maxLifetime & maxLifetime > 0) nulstilles til 0. Det vil sige, hvis den skal træde i kraft, skal den være >0, og den må ikke være mindre end 2 sekunder, og når maxLifetime > 0 timer kan ikke være større end maxLifetime
initializationFailTimeout11-
isAutoCommittruetrue-
isReadOnlyfalsefasle-
isAllowPoolSuspensionfalsefalse-
isIsolateInternalQueriesfalsefalse-
isRegisterMbeansfalsefalse-
ForsegletfalsetrueDette flag er sandt efter kørslen starter, hvilket indikerer, at modifikationen ikke længere kører
poolNamenulHikariPool-1-
katalognulnul-
connectionInitSqlnulnul-
connectionTestQuerynulnul-
dataSourceClassNamenulnul-
skemanulnul-
transaktionIsolationNamenulnul-
dataKildenulnul-
dataSourceProperties{}{}-
threadFactorynulnul-
planlagtEksekutornulnul-
metricsTrackerFactorynulnul-
metricRegistrynulnul-
healthCheckRegistrynulnul-
healthCheckEgenskaber{}{}-

Når en stresstest udføres, kan applikationen rapportere følgende fejl:

Forårsaget af: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; indlejret undtagelse er java.sql.SQLTransientConnectionException: HikariPool-1 - Forbindelse er ikke tilgængelig, anmodning timeout'et efter 30000 ms.
        at 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)
        på org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337)
        på 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(Ukendt kilde)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
        ... 114 mere
Forårsaget af: java.sql.SQLTransientConnectionException: HikariPool-1 - Forbindelse er ikke tilgængelig, anmodning udløb efter 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 mere


Fejl:Undlod at skaffe JDBC-forbindelse; indlejret undtagelse er java.sql.SQLTransientConnectionUndtagelse: HikariPool-1 - Forbindelse er ikke tilgængelig, anmodning udløber efter 30000ms.

Controlleren udleverer HikariDataSource konfigurationsgrænsefladekoden som følger:

Optimer skemaet, øg det maksimale antal tråde og øg antallet af forbindelser, der holdes inaktive, og ændr application.yml-konfigurationen som følger:

(Slut)




Tidligere:Forskellen mellem getLastRowNum() og getLastCellNum() i POI'er
Næste:Sammenligning af testværktøjerne LoadRunner og Jmeter
Opslået den 14-12-2022 kl. 21:46:53 |
Lær at lære
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com