Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 9693|Odgovoriti: 1

[Vir] Spring Boot database connection pool HikariPool optimizacija

[Kopiraj povezavo]
Objavljeno 25. 11. 2021 ob 14:55:15 | | | |
Različica Spring-Boot-2.0.0-M1 spremeni privzeti bazen povezav baze podatkov iz tomcat jdbc pool v hikari, in ob zagonu aplikacije spring boot konzola izpiše naslednje
2021-11-25 14:48:09.429 INFO 22236 --- [ glavno] com.zaxxer.hikari.HikariDataVir : HikariPool-1 - Začetek...
2021-11-25 14:48:09.813 INFO 22236 --- [ glavno] com.zaxxer.hikari.HikariDataVir : HikariPool-1 - Začetek zaključen.

Privzete vrednosti za Hikarijevo privzeto konfiguracijo so naslednje:
{"timeout":30000,"maximum-pool-size":10,"max-lifetime":180000,"minimum-neaktivno":10,"validation-timeout":5000,"idle-timeout":60000}

imePrivzete nastavitve konstruktorjaPrivzeta konfiguracija je vrednost po validacijivalidatereset
minIdle-110minIdle<0 ali minIdle>maxPoolSize, se ponastavi na maxPoolSize
maxPoolSize-110Če je maxPoolSize manjši od 1, se ponastavi. Ko se minIdle<=0 ponastavi na DEFAULT_POOL_SIZE, je 10; Če je minIdle>0, se ponastavi na vrednost minIdle
maxLifetimeMINUTES.toMillis(30) = 18000001800000Če ni enaka 0 in manj kot 30 sekund, se ponastavi nazaj na 30 minut
povezavaTimeoutSECONDS.toMillis(30) = 3000030000Če je manj kot 250 ms, se ponastavi nazaj na 30 sekund
validationTimeoutSECONDS.toMillis(5) = 50005000Če je manj kot 250 ms, se ponastavi nazaj na 5 sekund
loginTimeout1030Math.max(1, (int) MILISECONDS.toSeconds(500L + connectionTimeout)), kar je največje število sekund za pretvorbo sekund v celotno in 1
IdleTimeoutMINUTES.toMillis(10) = 600000600000Če idleTimeout+1 sekunda > maxLifetime in maxLifetime >0, se ponastavi na 0; Če je idleTimeout!=0 in manj kot 10 sekund, se ponastavi na 10 sekund
leakDetectionThreshold00Če je večji od 0 in ni enotski test, se dodatno ocenjuje, da se (leakDetectionThreshold < SECONDS.toMillis(2) ali (leakDetectionThreshold > maxLifetime & maxLifetime > 0) ponastavi na 0. Torej, če naj bi se uvedel, mora biti >0, ne sme biti manj kot 2 sekundi, in ko maxLifetime > 0 ur ne more biti večje od maxLifetime
ZačetnicaNeuspehČasovna omejitev11-
isAutoCommittruetrue-
isReadOnlyfalseFasle-
isAllowPoolSuspensionfalsefalse-
isIsolateInternalQueriesfalsefalse-
isRegisterMbeansfalsefalse-
ZaprtifalsetrueTa zastavica velja po začetku teka, kar pomeni, da sprememba ni več v teku
poolImeNullHikariPool-1-
KatalogNullNull-
connectionInitSqlNullNull-
connectionTestQueryNullNull-
dataSourceClassNameNullNull-
ShemeNullNull-
transactionIsolationNameNullNull-
dataSourceNullNull-
dataSourceLastnosti{}{}-
threadFactoryNullNull-
scheduledExecutorNullNull-
metricsTrackerFactoryNullNull-
metricRegistryNullNull-
healthCheckRegistryNullNull-
healthCheckProperties{}{}-

Pri izvajanju stresnega testa lahko aplikacija poroča o naslednjih napakah:

Vzrok: org.springframework.jdbc.CannotGetJdbcConnectionException: Ni uspelo pridobiti JDBC povezave; gnezdena izjema je java.sql.SQLTransientConnectionException: HikariPool-1 - Povezava ni na voljo, zahteva je potekla po 30000 ms.
        at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
        at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80)
        at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67)
        na org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337)
        at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86)
        na org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62)
        na org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)
        na org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
        na org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
        at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)
        na org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)
        na com.sun.proxy.$Proxy 224.query(Neznani vir)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
        ... še 114
Vzrok: java.sql.SQLTransientConnectionException: HikariPool-1 - Povezava ni na voljo, zahteva je potekla po 30000ms.
        na com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695)
        na com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197)
        na com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162)
        na com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)
        at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158)
        at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116)
        at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
        ... Še 126


Napaka:Ni uspelo pridobiti povezave JDBC; gnezdena izjema je java.sql.SQLTransientConnectionException: HikariPool-1 - Povezava ni na voljo, zahteva je potekla po 30000 ms.

Krmilnik izpiše konfiguracijsko vmesnično kodo HikariDataSource na naslednji način:

Optimizirajte shemo, povečajte največje število niti in povečajte število povezav, ki ostanejo neaktivne, ter spremenite konfiguracijo application.yml na naslednji način:

(Konec)




Prejšnji:Razlika med getLastRowNum() in getLastCellNum() v POI-jih
Naslednji:Primerjava testnih orodij LoadRunner in Jmeter
Objavljeno 14. 12. 2022 ob 21:46:53 |
Uči se učiti
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com