Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 9693|Válasz: 1

[Forrás] Spring Boot database connection pool HikariPool optimization

[Linket másol]
Közzétéve: 2021-11-25 14:55:15 | | | |
A Spring-Boot-2.0.0-M1 verzió megváltoztatja az alapértelmezett adatbázis-kapcsolati poolot tomcat jdbc poolról hikari-ra, és a spring boot alkalmazás futtatása során a konzol a következőket adja ki
2021-11-25 14:48:09.429 INFO 22236 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Indul...
2021-11-25 14:48:09.813 INFO 22236 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Kezdés befejezve.

Hikari alapértelmezett konfigurációjának alapértelmezett értékei a következők:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":180000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":600000}

névKonstruktor alapértelmezésekAz alapértelmezett konfiguráció a validálás utáni értékvalidatereset
minIdle-110minIdle<0 vagy minIdle>maxPoolSize, visszaállítva maxPoolSize-re van
maxPoolSize-110Ha maxPoolSize kisebb, mint 1, akkor újraindul. Amikor minIdle<=0 visszaállítva DEFAULT_POOL_SIZE-re, akkor 10; Ha minIdle>0, akkor visszaáll minIdle értékre
maxLifetimePERC.toMillis(30) = 18000001800000Ha nem egyenlő 0-val, és kevesebb mint 30 másodperc, visszaállítják 30 percre
connectionTimeoutSECONDS.toMillis(30) = 3000030000Ha kevesebb mint 250 ms, visszaállítják 30 másodpercre
validációIdőkorlátMÁSODPERCEK.toMillis(5) = 50005000Ha kevesebb, mint 250 ms, visszaállítják 5 másodpercre
loginTimeout1030Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), ami a connectionTimeout+500ms maximális száma, amely a másodpercek számát egészére és 1-re alakítja
idleTimeoutPERC.toMillis(10) = 600000600000Ha idleTimeout+1 másodperc > maxLifetime és maxLifetime >0, akkor visszaáll 0-ra; Ha idleTimeout!=0 és kevesebb mint 10 másodperc, akkor visszaállítják 10 másodpercre
LeakDetection Threshold00Ha ez nagyobb, mint 0, és nem egységteszt, akkor továbbá úgy ítélik meg, hogy (leakDetectionThreshold < SECONDS.toMillis(2) vagy (leakDetectionThreshold > maxLifetime && maxLifetime > 0) nullára lesz visszaállítva. Vagyis, ha ez hatályba lép, annak >0-nak kell lennie, és nem lehet kevesebb mint 2 másodperc, és amikor maxLifetime > 0 óra nem lehet nagyobb, mint maxLifetime
initializationFailTimeout11-
isAutoCommittruetrue-
isReadOnlyfalseFasle-
isAllowPoolSuspensionfalsefalse-
isIsolateInternalQueriesfalsefalse-
isRegisterMbeansfalsefalse-
lezártfalsetrueEz a zászló a futtatás kezdete után érvényes, jelezve, hogy a módosítás már nem fut
PoolNamenullaHikariPool-1-
katalógusnullanulla-
connectionInitSqlnullanulla-
connectionTestQuerynullanulla-
dataSourceClassNamenullanulla-
sémanullanulla-
transactionIsolationNamenullanulla-
adatforrásnullanulla-
dataSourceProperties{}{}-
threadFactorynullanulla-
scheduledExecutornullanulla-
metricsTrackerFactorynullanulla-
metricRegistrynullanulla-
healthCheckRegistrynullanulla-
healthCheckProperties{}{}-

Stresszteszt során az alkalmazás a következő hibákat jelentheti:

Ok: org.springframework.jdbc.CannotGetJdbcConnectionException: Nem sikerült elérni a JDBC Connection-t; a beágyazott kivétel java.sql.SQLTransientConnectionException: HikariPool-1 – Kapcsolat nem elérhető, a kérés időkorlátja 30000 ms után.
        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)
        az org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) címen
        az org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) címen
        at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62)
        at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) címen
        az org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) címen
        a org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) címen
        at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)
        at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)
        a com.sun.proxy.$Proxy 224.query címen (ismeretlen forrás)
        az org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) címen
        ... 114 további
Okta: java.sql.SQLTransientConnectionException: HikariPool-1 – Kapcsolat nem elérhető, a kérés 30000 ms után időzített.
        at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695)
        a com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197) címen
        a com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162) címen
        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 további


Hiba:Nem sikerült megszerezni a JDBC Connection-t; beágyazott kivétel java.sql.SQLTransientConnectionException: HikariPool-1 – Kapcsolat nem elérhető, a kérés időlezárva 30000ms után.

A vezérlő a HikariDataSource konfigurációs interfész kódját a következőképpen adja ki:

Optimalizáljuk a sémát, növeljük a szálak maximális számát és növeljük az üresen tartandó kapcsolatok számát, valamint módosítsuk a application.yml konfigurációt az alábbiak szerint:

(Vége)




Előző:A különbség getLastRowNum() és getLastCellNum() között a POI-kben
Következő:A teszteszközök összehasonlítása, a LoadRunner és a Jmeter
Közzétéve: 2022-12-14 21:46:53 |
Tanulj meg
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com