[解決済み] 光プール LeakDetectionThreshold で検出された接続漏れ
2022-02-14 22:55:01
質問
私は光接続プールを持っており、以下のように設定されています。
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setJdbcUrl(dbProps.getUrl());
hikariConfig.setUsername(dbProps.getUser());
hikariConfig.setPassword(dbProps.getPass());
hikariConfig.addDataSourceProperty("cachePrepStmts", "true");
hikariConfig.addDataSourceProperty("prepStmtCacheSize", "250");
hikariConfig.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
hikariConfig.setMaximumPoolSize(Runtime.getRuntime().availableProcessors() * 5 + 2);
hikariConfig.setIdleTimeout(36000);
hikariConfig.setConnectionTestQuery("SELECT 1;");
hikariConfig.setConnectionTimeout(20000);
hikariConfig.setMaxLifetime(1440000);
hikariConfig.setLeakDetectionThreshold(3000); // LEAK DETECTION THRESHOLD
dataSource = new HikariDataSource(hikariConfig);
そして、いくつかのDBの詳細が以下のように取得されます。
public class SomeDBFetcher {
private DataSource dataSource;
public SomeDBFetcher(final DataSource dataSource) {
this.dataSource = dataSource;
}
public void someMethod() {
try (final var conn = dataSource.getConnection(); // CONNECTION LEAKS ?
final var stmt = conn.prepareStatement("SOME QUERY")) {
// SOME DB
}
}
}
ログを見ると、コネクションリークが発生しています。なぜ接続漏れが発生するのでしょうか?
解決方法を教えてください。
LeakDetectionThreshold
は、定義された制限時間(あなたの場合は3秒)内に接続を閉じないと、潜在的なリークが発生することを通知します。
ここでは、おそらくクエリ(またはその内部の何か)を使用しています。
try
を使用した場合、3秒以上かかり、接続漏れの可能性があると警告されます。
ですから、このような警告が表示されても、実際に漏電しているとは限りません。
ドキュメントより。
<ブロッククオート
リーク検知閾値
このプロパティは、接続漏れの可能性を示すメッセージが記録される前に、接続がプールから外れることができる時間の長さを制御します。値0は、リーク検出が無効であることを意味します。リーク検出を有効にするための許容最小値は、2000 (2秒) です。デフォルト:0
関連
-
[解決済み】Hibernateエラー:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられました。
-
[解決済み】Javaの".class期待値"
-
[解決済み】不正な反射的アクセスとは?
-
[解決済み】Javaでユーザー入力を待機させる方法
-
[解決済み] intellijが自動配線リポジトリにタイプのBeanが見つからないと不正確な発言をする件
-
[解決済み】Javaで文字列をコピーするにはどうしたらいいですか?
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み】CreateProcess error=2, The system cannot find file specified.
-
[解決済み] 光CPで接続漏れが発生した模様
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー:配列または java.lang.Iterable のインスタンスに対してのみ反復処理を行うことができます。
-
[解決済み】このコンパイルユニットは名前付きモジュールに関連しているため、名前付きパッケージeclipseを宣言する必要があります。
-
[解決済み】"比較メソッドはその一般契約に違反する!"
-
[解決済み】宣言されたパッケージが期待されるパッケージと一致しない ""
-
[解決済み】HTTPステータス500 サーブレットクラスのインスタンス化エラー [重複]。
-
[解決済み】Eclipseがエラーメッセージ "Java was started but returned exit code = 1" を返す
-
[解決済み】メソッド本体がない、またはJavaで抽象的な宣言をする
-
[解決済み】keytoolエラー 鍵屋が改ざんされたか、パスワードが不正確だった場合
-
[解決済み] テスト
-
[解決済み】 executeQuery()でデータ操作文が発行できない。)