架构师_程序员_码农网

U Získání hesla
Registrace

QQ登录

Stačí jeden krok, abyste mohli začít

Vyhledávání
Zobrazení:4942|Odpověď: 1
打印 上一主题 下一主题

[Archiv]Spring Boot Database Connection Pool HikariPool Optimisation

[Kopírovat odkaz]
V 跳转到指定楼层
majitel
发表于 2021-11-25 14:55:15|只看该作者回帖奖励|Reverzníprocházení|Režim čtení
Verze Spring-Boot-2.0.0-M1 změnila výchozí pool připojení k databázi z tomcat jdbc pool na hikari, při spuštění aplikace Spring-Boot konzola vypíše následující:
2021-11-25 14:48:09.429 INFO 22236 --- [ main] com.zaxxer.hikari. HikariDataSource : HikariPool-1 - Starting...
2021-11-25 14:48:09.813 INFO 22236 --- [ main] com.zaxxer.hikari. HikariDataSource : HikariPool-1 - Starting completed.

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

name Výchozí hodnoty konstruktoru Výchozí hodnota po ověření platnosti. Obnovení platnosti
minIdle -1 10 minIdle<0 nebo minIdle>maxPoolSize se resetuje na maxPoolSize.
maxPoolSize maxPoolSize -1 10 Pokud je maxPoolSize menší než 1, je resetována. Pokud je minIdle<=0, je resetována na hodnotu DEFAULT_POOL_SIZE, která je 10; pokud je minIdle>0, je resetována na hodnotu minIdle.
maxLifetime MINUTES.toMillis(30) = 1800000 1800000 Pokud se nerovná 0 a je kratší než 30 sekund, obnoví se zpět na 30 minut.
connectionTimeout SECONDS.toMillis(30) = 30000 30000 Pokud je kratší než 250 milisekund, resetuje se zpět na 30 sekund
validationTimeout SECONDS.toMillis(5) = 5000 5000 Pokud je kratší než 250 milisekund, obnoví se zpět na 5 sekund
loginTimeout 10 30 Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), zaokrouhluje nahoru na sekundy pro connectionTimeout + 500ms a 1 pro 1
idleTimeout MINUTES.toMillis(10) = 600000 600000 Pokud idleTimeout+1sec > maxLifetime a maxLifetime > 0, bude nastaven na 0. Pokud idleTimeout!=0 a méně než 10sec, bude nastaven na 10sec.
leakDetectionThreshold 0 0 Pokud je větší než 0 a nejedná se o jednotkový test, další posouzení: (leakDetectionThreshold < SECONDS.toMillis(2) nebo (leakDetectionThreshold > maxLifetime && maxLifetime &gt ; 0), bude vynulována na 0 . Tj. aby se projevila, musí být > 0 a nesmí být kratší než 2 sekundy a nesmí být větší než maxLifetime, když maxLifetime > 0.
initialisationFailTimeout 1 1 -isAutoCommit
isAutoCommit initialisationFailTimeout isAutoCommit -isReadOnly
isReadOnly true - isReadOnly fasle -isAllowPoolSuspension
isAllowPoolSuspension fasle - isAllowPoolSuspension false fasle - isAllowPoolSuspension false false
isIsolateInternalQueries false - isIsolateInternalQueries false -isRegisterMbeans
isRegisterMbeans false false -false
zapečetěný false true Tento příznak je pravdivý, když je spuštěn běh a nejsou spuštěny žádné další modifikace.
poolName null HikariPool-1 HikariPool-1
katalog null null HikariPool-1 - catalog null null
connectionInitSql null null -null
connectionTestQuery null null connectionTestQuery null null -
dataSourceClassName null null -null
schema null null -null
transactionIsolationName null null -transactionIsolationName null
transactionIsolationName null - dataSource null -dataSource null null
dataSourceProperties {} {} null - dataSourceProperties {} {}
threadFactory null null threadFactory null null -
scheduledExecutor null null -metricsTrackerFactory
metricsTrackerFactory null null null - metricsTrackerFactory
metricRegistry null null null - metricRegistry
healthCheckRegistry null null -healthCheckRegistry null
healthCheckProperties {HealthCheckRegistry null null - healthCheckProperties} {} null - healthCheckProperties {} {}

Při provádění tlakového testu může aplikace hlásit následující chybu:

Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql. SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 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)
at 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)
at com.sun.proxy.$Proxy224.query(Neznámý zdroj)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
... 114 více
Příčina: java.sql.SQLTransientConnectionException: HikariPool-1 - Spojení není dostupné, požadavek vypršel po 30000ms.
at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197)
at 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)
... 126 více


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

Controller vypisuje kód konfiguračního rozhraní HikariDataSource následujícím způsobem:

Pro optimalizaci řešení, zvýšení maximálního počtu vláken a zvýšení počtu spojení držených v nečinnosti upravte konfiguraci application.yml následujícím způsobem:

(Konec)




Předchozí: Rozdíly mezi funkcemi POI getLastRowNum() a getLastCellNum()
Další článek: [Zpráva]Porovnání testovacích nástrojů LoadRunner a Jmeter
Kód Farmář, zveřejněný pouze v průběhu praxe, narazil na technické potíže, neuvádějte ostatní v omyl.
pohovka
发表于 2022-12-14 21:46:53|只看该作者
Nejsem si jistý, jestli to zvládnete.
Kód farmářské sítě, zveřejněný pouze v průběhu praxe, narazil na technické potíže, neuvádějte ostatní v omyl.
Před odesláním příspěvku se musíte přihlásit Přihlásit se | Registrovat se

T ato verze integrálních pravidel


VYLOUČENÍ: Veškerý software, programové materiály nebo články publikované Code Farmerem jsou omezeny pouze na použití pro studijní a výzkumné účely; výše uvedený obsah nesmí být používán ke komerčním nebo nelegálním účelům, jinak veškeré následky ponesou sami uživatelé. Tyto stránky informace ze sítě, spor o autorská práva nemá s těmito stránkami nic společného. Výše uvedený obsah musíte do 24 hodin od stažení kompletně odstranit z počítače. Pokud se vám program líbí, podpořte prosím originální software, zakupte si registraci a získejte lepší originální služby. Pokud dojde k porušení práv, kontaktujte nás prosím e-mailem, abychom to mohli řešit.

Mail To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Mapa stránek

GMT+8, 2024-9-19 03:36

Rychlá odpověďZpět na začátekZpět na seznam