Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 9693|Atbildi: 1

[Avots] Spring Boot datu bāzes savienojuma baseins HikariPool optimizācija

[Kopēt saiti]
Publicēts 2021-11-25 14:55:15 | | | |
Spring-Boot-2.0.0-M1 versija maina noklusējuma datu bāzes savienojuma baseinu no tomcat jdbc pool uz hikari, un, palaižot spring boot lietojumprogrammu, konsole izvada šādu
2021-11-25 14:48:09.429 INFO 22236 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Sākot...
2021-11-25 14:48:09.813 INFO 22236 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Sākums pabeigts.

Hikari noklusējuma konfigurācijas noklusējuma vērtības ir šādas:
{"savienojuma-taimauts":30000,"maksimālais-pūla-lielums":10,"maksimālais kalpošanas laiks":1800000,"minimums-dīkstāve":10,"validācijas-taimauts":5000,"dīkstāves taimauts":600000}

vārdsKonstruktora noklusējumiNoklusējuma konfigurācija ir vērtība pēc validācijasvalidatereset
minIdle-110minIdle<0 vai minIdle>maxPoolSize, tas tiek atiestatīts uz maxPoolSize
maxPoolSize-110Ja maxPoolSize ir mazāks par 1, tas tiek atiestatīts. Kad minIdle<=0 ir atiestatīts uz DEFAULT_POOL_SIZE, tas ir 10; Ja minIdle>0, tiek atiestatīta vērtība minIdle
maksimālais kalpošanas laiksMINŪTES.uzMillis(30) = 18000001800000Ja tas nav vienāds ar 0 un mazāks par 30 sekundēm, tas tiks atiestatīts uz 30 minūtēm
savienojuma taimautsSEKUNDES.uzMillis(30) = 3000030000Ja tas ir mazāks par 250 ms, tas tiek atiestatīts uz 30 sekundēm
validationTimeoutSEKUNDES.uzMillis(5) = 50005000Ja tas ir mazāks par 250 ms, tas tiek atiestatīts uz 5 sekundēm
pieteikšanāsTaimauts1030Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), kas ir maksimālais connectionTimeout+500ms, lai pārvērstu sekunžu skaitu uz veselu un 1
dīkstāves taimautsMINŪTES.uzMillis(10) = 600000600000Ja idleTimeout+1 sekunde > maxLifetime un maxLifetime >0, tas tiks atiestatīts uz 0; Ja idleTimeout!=0 un ir mazāks par 10 sekundēm, tas tiek atiestatīts uz 10 sekundēm
noplūdes noteikšanas slieksnis00Ja tas ir lielāks par 0 un nav vienības tests, tālāk tiek spriests, ka (leakDetectionThreshold < SECONDS.toMillis(2) vai (leakDetectionThreshold > maxLifetime && maxLifetime > 0) tiks atiestatīts uz 0. Tas ir, ja tas stājas spēkā, tam jābūt >0, un tas nevar būt mazāks par 2 sekundēm, un kad maxLifetime > 0 stundas nevar būt ilgākas par maxLifetime
initializationFailTimeout11-
isAutoCommittruetrue-
ir tikai lasāmsfalseFasle-
isAllowPoolSuspensionfalsefalse-
isIsolateInternalQueriesfalsefalse-
isRegisterMbeansfalsefalse-
NoslēgtsfalsetrueŠis karodziņš ir patiess pēc palaišanas sākuma, norādot, ka modifikācija vairs nedarbojas
poolNamenulleHikariPool-1-
Katalogunullenulle-
savienojumsInitSQLnullenulle-
connectionTestQuerynullenulle-
dataSourceClassNamenullenulle-
Shēmasnullenulle-
transactionIsolationNamenullenulle-
datu avotsnullenulle-
dataSourceProperties{}{}-
vītņu rūpnīcanullenulle-
plānotais izpildītājsnullenulle-
metricsTrackerFactorynullenulle-
metricRegistrynullenulle-
healthCheckRegistrynullenulle-
healthCheckProperties{}{}-

Veicot stresa testu, lietojumprogramma var ziņot par šādām kļūdām:

Izraisījis: org.springframework.jdbc.CannotGetJdbcConnectionException: neizdevās iegūt JDBC savienojumu; ligzdotais izņēmums ir java.sql.SQLTransientConnectionException: HikariPool-1 — savienojums nav pieejams, pieprasījuma taimauts beidzas pēc 30000 ms.
        vietnē org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
        vietnē org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80)
        vietnē org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67)
        org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337)
        org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86)
        org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62)
        org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)
        org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
        org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
        vietnē com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)
        vietnē org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)
        vietnē com.sun.proxy.$Proxy 224.query(Nezināms avots)
        org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
        ... Vēl 114
Cēlonis: java.sql.SQLTransientConnectionException: HikariPool-1 - savienojums nav pieejams, pieprasījuma taimauts pēc 30000 ms.
        vietnē com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695)
        vietnē com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197)
        vietnē com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162)
        vietnē com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)
        vietnē org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158)
        vietnē org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116)
        vietnē org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
        ... Vēl 126


Kļūda:Neizdevās iegūt JDBC savienojumu; ligzdotais izņēmums ir java.sql.SQLTransientConnectionException: HikariPool-1 - savienojums nav pieejams, pieprasījuma taimauts pēc 30000 ms.

Kontrolieris izvada HikariDataSource konfigurācijas interfeisa kodu šādi:

Optimizējiet shēmu, palieliniet maksimālo pavedienu skaitu un palieliniet dīkstāvē esošo savienojumu skaitu un modificējiet application.yml konfigurāciju šādi:

(Beigas)




Iepriekšējo:Atšķirība starp getLastRowNum() un getLastCellNum() IP
Nākamo:LoadRunner un Jmeter testēšanas rīku salīdzinājums
Publicēts 2022-12-14 21:46:53 |
Iemācieties mācīties
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com