1. ホーム
  2. java

[解決済み] HikariPool-1 - 接続できません。非常に小さな負荷のサーバーで30000ms後にリクエストがタイムアウトしました。

2022-02-28 05:07:47

質問

テスト用の小さなJavaアプリケーションを持っています。最近、hikariに移行しました。このようなエラーが何度も発生します。

java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:602)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:195)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:145)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:85)

以下は、私が初期に行ったヒカリの設定です。

 HikariConfig config = new HikariConfig();
            config.setJdbcUrl("jdbc:mysql://localhost:3306/****"); 
            config.setUsername("***"); 
            config.setPassword("*****");      
            config.setMaximumPoolSize(20);  

2つのデバイスでほとんど使用されておらず、最後のほうは確実に閉じています。だから、私はそれがエラーを取得し続ける理由がわからないのですか?何が問題なのか、または私が変更する必要があるいくつかの設定があるのでしょうか?

ひかりのバージョンは、HikariCP-2.6.1.jarです。

解決方法は?

ネットワークの遅延や、クエリの実行に時間がかかりすぎている(30000ミリ秒以上)ために、データベースが30000ミリ秒以内に接続を取得できない場合です。

プロパティの値を増やしてみてください。 connectionTimeout .

YMLの設定例です。

spring:
  datasource:
    hikari:
      minimumIdle: 2
      maximumPoolSize: 10
      idleTimeout: 120000
      connectionTimeout: 300000
      leakDetectionThreshold: 300000

Java Configの例です。

HikariConfig config = new HikariConfig();
        config.setMaximumPoolSize(20);
        config.setConnectionTimeout(300000);
        config.setConnectionTimeout(120000);
        config.setLeakDetectionThreshold(300000);