Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 9693|Svar: 1

[Källa] Spring Boot-databasanslutningspool HikariPool-optimering

[Kopiera länk]
Publicerad den 2021-11-25 14:55:15 | | | |
Spring-Boot-2.0.0-M1-versionen ändrar standardpoolen för databasanslutning från tomcat jdbc-poolen till hikari, och när springboot-applikationen körs ger konsolen följande resultat
2021-11-25 14:48:09.429 INFO 22236 --- [ main] com.zaxxer.hikari.HikariDataKälla: HikariPool-1 - Startar...
2021-11-25 14:48:09.813 INFO 22236 --- [ main] com.zaxxer.hikari.HikariDataKälla: HikariPool-1 - Start slutförd.

Standardvärdena för Hikaris standardkonfiguration är följande:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":1800000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":600000}

NamnKonstruktörens standardinställningarStandardkonfigurationen är värdet efter valideringvalidatereset
minIdle-110minIdle<0 eller minIdle>maxPoolSize, återställs till maxPoolSize
maxPoolSize-110Om maxPoolSize är mindre än 1 återställs den. När minIdle<=0 återställs till DEFAULT_POOL_SIZE är det 10; Om minIdle>0 återställs värdet minIdle
maxLifetimeMINUTES.toMillis(30) = 180000001800000Om den inte är lika med 0 och mindre än 30 sekunder, återställs den till 30 minuter
connectionTimeoutSECONDS.toMillis(30) = 3000030000Om den är mindre än 250 ms återställs den till 30 sekunder
valideringTimeoutSECONDS.toMillis(5) = 50005000Om det är mindre än 250 ms återställs det till 5 sekunder
loginTimeout1030Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), vilket är maxvärdet av connectionTimeout+500ms för att omvandla antalet sekunder till hela och 1
idleTimeoutMINUTES.toMillis(10) = 600000600000Om idleTimeout+1 sekund > maxLifetime och maxLifetime >0, återställs den till 0; Om idleTimeout!=0 och mindre än 10 sekunder återställs den till 10 sekunder
läckageDetekteringTröskel00Om det är större än 0 och inte ett enhetstest, bedöms vidare att (leakDetectionThreshold < SECONDS.toMillis(2) eller (leakDetectionThreshold > maxLifetime & maxLifetime > 0) kommer att återställas till 0. Det vill säga, om det ska träda i kraft måste det vara >0, och det får inte vara mindre än 2 sekunder, och när maxLifetime > 0 timmar kan inte vara större än maxLifetime
initializationFailTimeout11-
isAutoCommittruetrue-
isReadOnlyfalseFasle-
isAllowPoolSuspensionfalsefalse-
isIsolateInternalQueriesfalsefalse-
isRegisterMbeansfalsefalse-
stängdfalsetrueDenna flagga gäller efter att körningen startat, vilket indikerar att modifieringen inte längre körs
poolNamenollHikariPool-1-
katalognollnoll-
connectionInitSqlnollnoll-
connectionTestQuerynollnoll-
dataSourceClassNamenollnoll-
Schematnollnoll-
transactionIsolationNamenollnoll-
dataKällanollnoll-
dataKällaEgenskaper{}{}-
threadFactorynollnoll-
schemalagd Verkställarenollnoll-
metricsTrackerFactorynollnoll-
metricRegistrynollnoll-
healthCheckRegistrynollnoll-
healthCheckEgenskaper{}{}-

Vid ett stresstest kan applikationen rapportera följande fel:

Orsakad av: org.springframework.jdbc.CannotGetJdbcConnectionException: Misslyckades med att erhålla JDBC-anslutningen; nästlade undantaget är java.sql.SQLTransientConnectionException: HikariPool-1 - Anslutningen är inte tillgänglig, begäran tidsavslutad efter 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)
        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)
        på 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(Okänd källa)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
        ... 114 till
Orsakad av: java.sql.SQLTransientConnectionException: HikariPool-1 - Anslutningen är inte tillgänglig, begäran tidsavslutad 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)
        på org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116)
        på org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
        ... 126 till


Misstag:Misslyckades med att skaffa JDBC-anslutning; nästlatat undantag är java.sql.SQLTransientConnectionException: HikariPool-1 - Anslutningen är inte tillgänglig, begäran tidsavslutad efter 30000 ms.

Kontrollern ger ut HikariDataSource-konfigurationsgränssnittskoden enligt följande:

Optimera schemat, öka det maximala antalet trådar och öka antalet anslutningar som hålls inaktiva, och modifiera application.yml konfigurationen enligt följande:

(Slut)




Föregående:Skillnaden mellan getLastRowNum() och getLastCellNum() i POI:er
Nästa:Jämförelse av testverktygen LoadRunner och Jmeter
Publicerad den 2022-12-14 21:46:53 |
Lär dig att lära dig
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com