Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 9693|Vastaus: 1

[Lähde] Spring Boot -tietokantayhteyspooli HikariPoolin optimointi

[Kopioi linkki]
Julkaistu 2021-11-25 klo 14:55:15 | | | |
Spring-Boot-2.0.0-M1 -versio vaihtaa oletustietokantayhteyspoolin tomcat jdbc poolista hikariin, ja kun Spring Boot -sovellusta ajetaan, konsoli tuottaa seuraavan tuloksen
2021-11-25 14:48:09.429 INFO 22236 --- [pää] com.zaxxer.hikari.HikariDataLähde: HikariPool-1 - Aloitetaan...
2021-11-25 14:48:09.813 INFO 22236 --- [pää] com.zaxxer.hikari.HikariDataLähde: HikariPool-1 - Aloitus valmis.

Hikarin oletusasetukset ovat seuraavat:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":1800000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":600000}

NimiValmistajan oletusasetuksetOletuskonfiguraatio on arvo validoinnin jälkeenvalidatereset
minIdle-110minIdle<0 tai minIdle>maxPoolSize, se nollataan maxPoolSizeen
maxPoolSize-110Jos maxPoolSize on pienempi kuin 1, se nollataan. Kun minIdle<=0 nollataan arvoon DEFAULT_POOL_SIZE, se on 10; Jos minIdle>0, se nollautuu arvoon minIdle
maxLifetimeMINUUTIT.toMillis(30) = 18000001800000Jos se ei ole nolla ja alle 30 sekuntia, se palautetaan 30 minuuttiin
connectionTimeoutSEKUNTEJA.toMillis(30) = 3000030000Jos se on alle 250 ms, se palautetaan 30 sekuntiin
validationTimemoreSEKUNTEJA.toMillis(5) = 50005000Jos se on alle 250 ms, se palautetaan 5 sekuntiin
loginTimeout1030Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), joka on connectionin maksimiTimeout+500ms muuntaakseen sekuntimäärän kokonaiseksi ja 1
idleTimeoutMINUUTIT.toMillis(10) = 600000600000Jos idleTimeout+1 sekunti > maxLifetime ja maxLifetime >0, se nollautuu nollaan; Jos idleTimeout!=0 ja alle 10 sekuntia, se nollautuu 10 sekuntiin
vuodon havaitseminenKynnys00Jos se on suurempi kuin 0 eikä yksikkötesti, arvioidaan lisäksi, että (leakDetectionThreshold < SECONDS.toMillis(2) tai (leakDetectionThreshold > maxLifetime && maxLifetime > 0) nollataan. Eli jos sen tulee vaikuttaa, sen täytyy olla >0, eikä se saa olla alle 2 sekuntia, ja kun maxLifetime > 0 tuntia ei voi olla suurempi kuin maxLifetime
initializationFailTimeout11-
isAutoCommittruetrue-
isReadOnlyfalseFasle-
isAllowPoolSuspensionfalsefalse-
isIsolateInternalQueriesfalsefalse-
isRegisterMbeansfalsefalse-
sinetöityfalsetrueTämä lippu on voimassa ajon alkaessa, mikä tarkoittaa, että muutos ei enää ole käynnissä
poolNamenollaHikariPool-1-
luettelonollanolla-
connectionInitSqlnollanolla-
connectionTestQuerynollanolla-
dataSourceClassNamenollanolla-
skeemanollanolla-
transactionIsolationNamenollanolla-
dataLähdenollanolla-
dataSourceProperties{}{}-
threadFactorynollanolla-
scheduledExecutornollanolla-
metricsTrackerFactorynollanolla-
metricRegistrynollanolla-
healthCheckRegistrynollanolla-
healthCheckProperties{}{}-

Rasitustestiä tehtäessä sovellus voi raportoida seuraavat virheet:

Aihe: org.springframework.jdbc.CannotGetJdbcConnectionException: Epäonnistui JDBC-yhteyden saamisessa; sisäkkäinen poikkeus on java.sql.SQLTransientConnectionException: HikariPool-1 – Yhteys ei ole käytettävissä, pyyntö ajoitettu 30000 ms:n jälkeen.
        osoitteessa org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
        osoitteessa org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80)
        osoitteessa org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67)
        osoitteessa org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337)
        osoitteessa org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86)
        osoitteessa org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62)
        osoitteessa org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)
        osoitteessa org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
        osoitteessa org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
        osoitteessa com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)
        osoitteessa org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)
        osoitteessa com.sun.proxy.$Proxy 224.query(Tuntematon lähde)
        osoitteessa org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
        ... 114 lisää
Aiheutettu: java.sql.SQLTransientConnectionException: HikariPool-1 - Yhteys ei ole käytettävissä, pyyntö ajoitettu 30000 ms:n jälkeen.
        osoitteessa com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695)
        osoitteessa com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197)
        osoitteessa com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162)
        osoitteessa com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)
        osoitteessa org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158)
        osoitteessa org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116)
        osoitteessa org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
        ... 126 lisää


Virhe:JDBC Connectionin saaminen epäonnistui; sisäkkäinen poikkeus on java.sql.SQLTransientConnectionException: HikariPool-1 – Yhteys ei ole käytettävissä, pyyntö ajoitettu 30000 ms jälkeen.

Ohjain tuottaa HikariDataSource-konfiguraatiorajapinnan koodin seuraavasti:

Optimoi järjestelmä, lisää maksimisäikeiden määrää ja lisää käyttämättöminä olevien liitäntöjen määrää, ja muokkaa application.yml konfiguraatiota seuraavasti:

(Loppu)




Edellinen:Ero getLastRowNum():n ja getLastCellNum():n välillä POI:issa
Seuraava:Testaustyökalujen LoadRunnerin ja Jmeterin vertailu
Julkaistu 2022-12-14 21:46:53 |
Opettele oppimaan
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com