Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 9693|Atsakyti: 1

[Šaltinis] Spring Boot duomenų bazės ryšio baseinas HikariPool optimizavimas

[Kopijuoti nuorodą]
Publikuota: 2021-11-25 14:55:15 | | | |
"Spring-Boot-2.0.0-M1" versija pakeičia numatytąjį duomenų bazės ryšio telkinį iš "Tomcat JDBC Pool" į "Hikari", o paleidus "Spring Boot" programą, konsolė išveda šiuos duomenis
2021-11-25 14:48:09.429 INFO 22236 --- [ pagrindinis] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Pradedama...
2021-11-25 14:48:09.813 INFO 22236 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Pradžia baigta.

Numatytosios Hikari konfigūracijos reikšmės yra šios:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":1800000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":600000}

vardas, pavadinimasKonstruktoriaus numatytieji nustatymaiNumatytoji konfigūracija yra reikšmė po tikrinimoPatvirtinti iš naujo
minTuščioji eiga-110minIdle<0 arba minIdle>maxPoolSize, jis iš naujo nustatomas į maxPoolSize
maxPoolSize-110Jei maxPoolSize yra mažesnis nei 1, jis nustatomas iš naujo. Kai minIdle<=0 iš naujo nustatomas į DEFAULT_POOL_SIZE, jis yra 10; Jei minIdle>0, jis iš naujo nustatomas į minIdle reikšmę
maksimalus tarnavimo laikasMINUTES.toMillis(30) = 18000001800000Jei jis nėra lygus 0 ir trumpesnis nei 30 sekundžių, jis bus atstatytas į 30 minučių
connectionTimeoutSECONDS.toMillis(30) = 3000030000Jei jis yra mažesnis nei 250 ms, jis atstatomas į 30 sekundžių
validationTimeoutSECONDS.toMillis(5) = 50005000Jei jis yra mažesnis nei 250 ms, jis atstatomas į 5 sekundes
loginTimeout1030Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), kuris yra maksimalus connectionTimeout + 500ms konvertuoti sekundžių skaičių į visumą ir 1
Tuščiosios eigos laikasMINUTES.toMillis(10) = 600000600000Jei idleTimeout+1 sekundė > maxLifetime ir maxLifetime >0, jis bus atstatytas į 0; Jei idleTimeout!=0 ir mažiau nei 10 sekundžių, jis iš naujo nustatomas į 10 sekundžių
nuotėkio aptikimo slenkstis00Jei jis yra didesnis nei 0 ir nėra vieneto testas, toliau sprendžiama, kad (leakDetectionThreshold < SECONDS.toMillis(2) arba (leakDetectionThreshold > maxLifetime & maxLifetime > 0) bus atstatytas į 0. Tai yra, jei jis turi įsigalioti, jis turi būti >0 ir negali būti trumpesnis nei 2 sekundės, o kai maxLifetime > 0 valandų negali būti ilgesnis už maxLifetime
initializationFailTimeout11-
isAutoCommittruetrue-
isReadOnlyfalseFasle-
isAllowPoolSuspensionfalsefalse-
isIsolateInternalQueriesfalsefalse-
isRegisterMbeansfalsefalse-
UždaromosfalsetrueŠi vėliavėlė galioja prasidėjus paleidimui, nurodant, kad modifikacija nebeveikia
poolNamenulisHikariPool-1-
Katalogasnulisnulis-
ryšysInitSQLnulisnulis-
connectionTestQuerynulisnulis-
dataSourceClassNamenulisnulis-
Schemosnulisnulis-
transactionIsolationNamenulisnulis-
duomenų šaltinisnulisnulis-
dataSourceProperties{}{}-
siūlų gamyklanulisnulis-
suplanuotasVykdytojasnulisnulis-
metrikaTrackerFactorynulisnulis-
metricRegistrynulisnulis-
healthCheckRegistrynulisnulis-
healthCheckProperties{}{}-

Atlikdama testavimą nepalankiausiomis sąlygomis, programa gali pranešti apie šias klaidas:

Sukėlė: org.springframework.jdbc.CannotGetJdbcConnectionException: nepavyko gauti JDBC ryšio; įdėtoji išimtis yra java.sql.SQLTransientConnectionException: HikariPool-1 – ryšys nepasiekiamas, užklausos skirtasis laikas baigėsi po 30000 ms.
        adresu org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
        adresu org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80)
        adresu org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67)
        adresu org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337)
        adresu org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86)
        adresu org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62)
        adresu org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)
        adresu org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
        adresu org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
        adresu com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)
        adresu org.apache.ibatis.plugin.invoke(Plugin.java:62)
        adresu com.sun.proxy.$Proxy 224.query(Nežinomas šaltinis)
        adresu org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
        ... 114 daugiau
Sukėlė: java.sql.SQLTransientConnectionException: HikariPool-1 – ryšys nepasiekiamas, užklausos skirtasis laikas baigėsi po 30000 ms.
        adresu com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695)
        adresu com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197)
        adresu com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162)
        adresu com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)
        adresu org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158)
        adresu org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116)
        adresu org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
        ... 126 daugiau


Klaida:Nepavyko gauti JDBC ryšio; įdėtoji išimtis yra java.sql.SQLTransientConnectionException: HikariPool-1 – ryšys nepasiekiamas, užklausos skirtasis laikas baigėsi po 30000 ms.

Valdiklis išveda HikariDataSource konfigūracijos sąsajos kodą taip:

Optimizuokite schemą, padidinkite maksimalų gijų skaičių ir nenaudojamų jungčių skaičių bei pakeiskite application.yml konfigūraciją taip:

(Pabaiga)




Ankstesnis:Skirtumas tarp getLastRowNum() ir getLastCellNum() lankytinose vietose
Kitą:Testavimo įrankių "LoadRunner" ir "Jmeter" palyginimas
Paskelbta 2022-12-14 21:46:53 |
Išmokite mokytis
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com