この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 9693|答える: 1

[出典] Spring Bootデータベース接続プールHikariPool最適化

[リンクをコピー]
2021年11月25日 14:55:15に投稿 | | | |
Spring-Boot-2.0.0-M1バージョンでは、デフォルトのデータベース接続プールをtomcatのjdbcプールからhikariに変更し、springbootアプリケーションを実行するとコンソールは以下の出力をします
2021-11-25 14:48:09.429 情報 22236 --- [メイン] com.zaxxer.hikari.Hikari データソース:HikariPool-1 - 開始中...
2021-11-25 14:48:09.813 情報 22236 --- [メイン] com.zaxxer.hikari.hikariDataSource: HikariPool-1 - 開始完了。

ヒカリのデフォルト構成のデフォルト値は以下の通りです:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":1800000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":600000}

名前コンストラクターのデフォルトデフォルトの設定は検証後の値ですvalidreset
ミニドル-110minIdle<0 または minIdle>maxPoolSize にリセットされます
maxPoolSize-110maxPoolSizeが1未満の場合はリセットされます。 minIdle<=0がDEFAULT_POOL_SIZEにリセットされると10になります。 minIdle>0の場合、minIdleの値にリセットされます
maxLifetimeMINUTES.toMillis(30) = 180000018000000でなく30秒未満の場合は、30分にリセットされます
接続タイムアウトSECONDS.toMillis(30) = 3000030000250ms未満の場合はリセットされて30秒に戻ります
検証タイムアウト秒数からミリ(5) = 50005000250ms未満の場合は5秒にリセットされます
ログインタイムアウト1030Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout))、これは接続タイムアウト+秒数を全に変換するための最大500msであり、1
idleTimeoutMINUTES.toMillis(10) = 600000600000もしアイドルタイムアウト+1秒>maxLifetimeおよびmaxLifetime >0の場合、リセットされます。 アイドルタイムアウト!=0かつ10秒未満の場合は、10秒にリセットされます
リーク検出閾値00もし0より大きく、ユニットテストでない場合、さらに(leakDetectionThreshold < SECONDS.toMillis(2) または (leakDetectionThreshold > maxLifetime && maxLifetime > 0)が0にリセットされると判断されます。つまり、効果を発揮するには>0でなければならず、2秒未満でなければならず、maxLifetimeが> 0時間はmaxLifetimeより大きくはなりません
初期化FailTimeout11-
isAutoCommittruetrue-
isReadOnlyfalseファスレ-
isAllowPoolSuspensionfalsefalse-
isIsolateInternalQueriesfalsefalse-
isRegisterMbeansfalsefalse-
密封falsetrueこのフラグは実行開始後に真であり、修正がもはや実行されていないことを示します
プールネームヌルヒカリプール-1-
カタログヌルヌル-
connectionInitSqlヌルヌル-
connectionTestQueryヌルヌル-
dataSourceClassNameヌルヌル-
スキーマヌルヌル-
transactionIsolationNameヌルヌル-
データソースヌルヌル-
dataSourceProperties{}{}-
スレッドファクトリーヌルヌル-
scheduledExecutorヌルヌル-
metricsTrackerFactoryヌルヌル-
metricRegistryヌルヌル-
healthCheckRegistryヌルヌル-
healthCheckProperties(健康チェックプロパティ){}{}-

ストレステストを行う際、アプリケーションは以下のエラーを報告することがあります。

原因:org.springframework.jdbc.CannotGetJdbcConnectionException: JDBC接続取得に失敗; ネスト例外はjava.sqlです。SQLTransientConnectionException: HikariPool-1 - 接続は利用可能でなく、リクエストは30000msでタイムアウト。
        at org.springframework.jdbc.datasource.DataSource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
        org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80)
        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)
        at 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)
        com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)
        at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)
        com.sun.proxy.$Proxy 224.query(不明なソース)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
        ... あと114人
原因:java.sql.SQLTransientConnectionException: HikariPool-1 - 接続が利用可能でなく、リクエストは30000msでタイムアウト。
        com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695)
        com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197)
        com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162)
        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人


間違い:JDBCコネクション取得に失敗; ネスト例外はjava.sqlです。SQLTransientConnectionException: HikariPool-1 - 接続は利用可能でなく、リクエストは30000msでタイムアウト.

コントローラーはHikariDataSourceの設定インターフェースコードを次のように出力します。

スキームを最適化し、最大スレッド数を増やし、アイドル状態にする接続数を増やし、application.yml構成を以下のように修正します。

(終わり)




先の:POIにおけるgetLastRowNum()とgetLastCellNum()の違い
次に:LoadRunnerとJmeterのテストツールの比較
2022年12月14日 21:46:53に投稿 |
学ぶために
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com