Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 9693|Odpoveď: 1

[Zdroj] Spring Boot database connection pool optimalizácia HikariPool

[Kopírovať odkaz]
Zverejnené 25.11.2021 o 14:55:15 | | | |
Verzia Spring-Boot-2.0.0-M1 mení predvolený databázový connection pool z tomcat jdbc pool na hikari a pri spustení Spring Boot aplikácie konzola generuje nasledujúce
2021-11-25 14:48:09.429 INFO 22236 --- [ hlavný ] com.zaxxer.hikari.HikariDataZdroj : HikariPool-1 - Začiatok...
2021-11-25 14:48:09.813 INFO 22236 --- [hlavné] com.zaxxer.hikari.HikariDataZdroj: HikariPool-1 - Začiatok dokončený.

Predvolené hodnoty pre predvolenú konfiguráciu Hikari sú nasledovné:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":180000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":60000}

menoŠtandardy konštruktoraPredvolená konfigurácia je hodnota po validatevalidatereset
minIdle-110minIdle<0 alebo minIdle>maxPoolSize, sa resetuje na maxPoolSize
maxPoolSize-110Ak je maxPoolSize menšia ako 1, resetuje sa. Keď sa minIdle<=0 resetuje na DEFAULT_POOL_SIZE, je to 10; Ak minIdle>0, resetuje sa na hodnotu minIdle
maxLifetimeMINUTES.toMillis(30) = 18000001800000Ak to nie je rovné 0 a menej ako 30 sekúnd, vráti sa späť na 30 minút
connectionTimeoutSECONDS.toMillis(30) = 3000030000Ak je to menej ako 250 ms, vráti sa späť na 30 sekúnd
validationTimeoutSECONDS.toMillis(5) = 50005000Ak je to menej ako 250 ms, resetuje sa späť na 5 sekúnd
loginTimeout1030Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), čo je maximum connectionTimeout+500ms na prepočet sekúnd na celok a 1
idleTimeoutMINUTES.toMillis(10) = 600000600000Ak idleTimeout+1 sekunda > maxLifetime a maxLifetime >0, resetuje sa na 0; Ak idleTimeout!=0 a menej ako 10 sekúnd, resetuje sa na 10 sekúnd
leakDetectionThreshold00Ak je väčšia ako 0 a nie je jednotkovým testom, ďalej sa hodnotí, že (leakDetectionThreshold < SECONDS.toMillis(2) alebo (leakDetectionThreshold > maxLifetime & maxLifetime > 0) sa resetuje na 0. To znamená, že ak má nadobudnúť účinok, musí byť >0, nesmie byť kratšia ako 2 sekundy, a keď maxLifetime > 0 hodín nemôže byť väčšie ako maxLifetime
Timeout inicializácieZlyhania11-
isAutoCommittruetrue-
isReadOnlyfalseFasle-
isAllowPoolSuspensionfalsefalse-
isIsolateInternalQueriesfalsefalse-
isRegisterMbeansfalsefalse-
utesnenýfalsetrueTento príznak je pravdivý po začiatku behu, čo znamená, že úprava už neprebieha
poolNázovnulaHikariPool-1-
katalógnulanula-
connectionInitSqlnulanula-
connectionTestQuerynulanula-
dataSourceClassNamenulanula-
schémanulanula-
transactionIsolationNamenulanula-
dataSourcenulanula-
dataSourceProperties{}{}-
threadFactorynulanula-
scheduledExecutornulanula-
metricsTrackerFactorynulanula-
metricRegistrynulanula-
healthCheckRegistrynulanula-
healthCheckProperties{}{}-

Pri vykonávaní záťažového testu môže aplikácia hlásiť nasledujúce chyby:

Spôsobené: org.springframework.jdbc.CannotGetJdbcConnectionException: Nepodarilo sa získať JDBC pripojenie; vnorená výnimka je java.sql.SQLTransientConnectionException: HikariPool-1 - Pripojenie nie je dostupné, požiadavka vypršala po 30000ms.
        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)
        at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337)
        at 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)
        na org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
        at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
        at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)
        at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)
        na com.sun.proxy.$Proxy 224.query(Neznámy zdroj)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
        ... Ďalších 114
Spôsobené: java.sql.SQLTransientConnectionException: HikariPool-1 - Pripojenie nie je dostupné, požiadavka vypršala po 30000ms.
        at 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)
        at 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šte 126


Chyba:Nepodarilo sa mu získať JDBC Connection; vnorená výnimka je java.sql.SQLTransientConnectionException: HikariPool-1 - Pripojenie nie je dostupné, požiadavka vypršala po 30000 ms.

Kontrolér výstupne odosiela konfiguračný kód rozhrania HikariDataSource nasledovne:

Optimalizujte schému, zvýšte maximálny počet vlákien a zvýšte počet pripojení držaných v nečinnosti, a upravte konfiguráciu application.yml nasledovne:

(Koniec)




Predchádzajúci:Rozdiel medzi getLastRowNum() a getLastCellNum() v POI
Budúci:Porovnanie testovacích nástrojov LoadRunner a Jmeter
Zverejnené 2022-12-14 21:46:53 |
Naučte sa učiť
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com