Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 9693|Odpověď: 1

[Zdroj] Optimalizace pro připojení databáze Spring Boot HikariPool

[Kopírovat odkaz]
Zveřejněno 25. 11. 2021 14:55:15 | | | |
Verze Spring-Boot-2.0.0-M1 mění výchozí databázový pool připojení z tomcat jdbc pool na hikari a při spuštění Spring Boot aplikace konzole vypíše následující
2021-11-25 14:48:09.429 INFO 22236 --- [ hlavní] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Začínám...
2021-11-25 14:48:09.813 INFO 22236 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start dokončen.

Výchozí hodnoty pro výchozí konfiguraci Hikari jsou následující:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":180000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":60000}

JménoVýchozí stavby konstruktorůVýchozí konfigurací je hodnota po validatevalidatereset
minIdle-110minIdle<0 nebo minIdle>maxPoolSize, je resetován na maxPoolSize
maxPoolSize-110Pokud je maxPoolSize menší než 1, resetuje se. Když se minIdle<=0 resetuje na DEFAULT_POOL_SIZE, je to 10; Pokud minIdle>0, resetuje se na hodnotu minIdle
maxLifetimeMINUTES.toMillis(30) = 18000001800000Pokud není rovna 0 a je méně než 30 sekund, vrátí se zpět na 30 minut
Timeout připojeníSECONDS.toMillis(30) = 3000030000Pokud je to méně než 250 ms, vrátí se zpět na 30 sekund
validationTimeoutSECONDS.toMillis(5) = 50005000Pokud je to méně než 250 ms, vrátí se zpět na 5 sekund
loginTimeout1030Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), což je maximum connectionTimeout+500ms pro převod počtu sekund na celek a 1
idleTimeoutMINUTES.toMillis(10) = 600000600000Pokud idleTimeout+1 sekunda > maxLifetime a maxLifetime >0, resetuje se na 0; Pokud idleTimeout!=0 a méně než 10 sekund, resetuje se na 10 sekund
leakDetectionThreshold00Pokud je větší než 0 a není jednotkovým testem, dále se posuzuje, že (leakDetectionThreshold < SECONDS.toMillis(2) nebo (leakDetectionThreshold > maxLifetime & maxLifetime > 0) bude resetováno na 0. To znamená, že pokud má být účinný, musí být >0 a nesmí být kratší než 2 sekundy, a když maxLifetime > 0 hodin nemůže být větší než maxLifetime
InicializaSelháníČasový limit11-
isAutoCommittruetrue-
isReadOnlyfalseFasle-
je AllowPoolSuspensionfalsefalse-
isIsolateInternalQueriesfalsefalse-
isRegisterMbeansfalsefalse-
zapečetěnýfalsetrueTento příznak je pravdivý po začátku běhu, což naznačuje, že úprava již neběží
poolNázevnulaHikariPool-1-
katalognulanula-
connectionInitSqlnulanula-
connectionTestQuerynulanula-
dataSourceClassNamenulanula-
schémanulanula-
transactionIsolationNamenulanula-
dataSourcenulanula-
dataSourceProperties{}{}-
threadFactorynulanula-
plánovaný vykonavatelnulanula-
metricsTrackerFactorynulanula-
metricRegistrynulanula-
healthCheckRegistrynulanula-
healthCheckProperties{}{}-

Při provádění zátěžového testu může aplikace hlásit následující chyby:

Způsobeno: org.springframework.jdbc.CannotGetJdbcConnectionException: Nepodařilo se získat JDBC Connection; Vnořená výjimka je java.sql.SQLTransientConnectionException: HikariPool-1 - Připojení není dostupné, požadavek vypršel po 30000 ms.
        at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
        na org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80)
        at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67)
        na adrese 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)
        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(Neznámý zdroj)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
        ... Dalších 114
Způsobeno: java.sql.SQLTransientConnectionException: HikariPool-1 - Připojení není dostupné, požadavek vypršel po 30000 ms.
        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)
        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)
        ... Dalších 126


Chyba:Nepodařilo se získat spojení s JDBC; vnořená výjimka je java.sql.SQLTransientConnectionException: HikariPool-1 - Připojení není dostupné, požadavek vypršel po 30000 ms.

Řadič výstupem vydává konfigurační kód rozhraní HikariDataSource následovně:

Optimalizujte schéma, zvyšte maximální počet vláken a počet spojení držených v klidu a upravte application.yml konfiguraci následovně:

(Konec)




Předchozí:Rozdíl mezi getLastRowNum() a getLastCellNum() v POI
Další:Srovnání testovacích nástrojů LoadRunner a Jmeter
Zveřejněno 14. 12. 2022 21:46:53 |
Učte se učit
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com