ホームページ  >  記事  >  Java  >  JPA-Hibernate と MySQL を使用して Spring Boot アプリケーションでの接続タイムアウトを防ぐ方法

JPA-Hibernate と MySQL を使用して Spring Boot アプリケーションでの接続タイムアウトを防ぐ方法

Barbara Streisand
Barbara Streisandオリジナル
2024-10-25 00:09:02690ブラウズ

How to Prevent Connection Timeouts in Spring Boot Applications Using JPA-Hibernate and MySQL?

Jpa-Hibernate および MySQL を使用した Spring Boot での接続タイムアウト

Spring Boot アプリケーションは、データベースの対話を容易にするために JPA-Hibernate フレームワークをよく利用します。ただし、遭遇する一般的な課題は、特に基盤となるデータベースとして MySQL を扱う場合に、指定した時間間隔の後に接続が失敗することです。

このようなシナリオでは、通常、アプリケーション ログに「最後のパケットは正常に送信されました」というエラー メッセージが表示されます。サーバーから受信したのは X ミリ秒前です...」 ここで、X はサーバーに設定された待機タイムアウト値を超えています。

この問題に対処するために、spring.datasource.testOnBorrow の使用を含む、いくつかのアプローチが提案されています。 =true および spring.datasource.validationQuery プロパティ。ただし、これらの方法は一般に推奨されません。

推奨される解決策: 接続検証を実装する

推奨される解決策は、アプリケーションの存続期間全体にわたって接続検証を実装することです。これは、次のプロパティを構成することで実現できます:

  • spring.datasource.max-active: プール内で許可されるアクティブな接続の最大数を指定します。
  • spring.datasource.initial-size : プール内に作成する接続の初期数を定義します。
  • spring.datasource.max-idle および spring.datasource.min-idle: アイドル接続の最小値と最大値を設定します。
  • spring .datasource.test-while-idle=true: アイドル期間中に接続を検証します。
  • spring.datasource.test-on-borrow=true: プールから接続を取得するときに接続を検証します。
  • spring.datasource.validation-query: 接続をテストするための検証クエリを提供します。

これらの設定により、アイドル状態の接続の定期的な検証が有効になり、プールが壊れた接続を検出して削除できるようになります。

HikariCP での自動接続検証

Spring Boot 2.x ではデフォルトの接続プールとして HikariCP が採用されているため、JDBC 検証メカニズムを使用するときに接続検証が HikariCP によって自動的に実行されるようになりました。

したがって、検証を有効にし、接続管理に適切な構成を提供することで、接続タイムアウト エラーを軽減し、JPA-Hibernate と MySQL を使用する Spring Boot アプリケーションでの信頼性の高いデータベース インタラクションを確保することができます。

以上がJPA-Hibernate と MySQL を使用して Spring Boot アプリケーションでの接続タイムアウトを防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。