ホームページ >データベース >mysql チュートリアル >Spring Boot データベース接続が非アクティブになった後に切断されるのはなぜですか?それを防ぐにはどうすればよいですか?

Spring Boot データベース接続が非アクティブになった後に切断されるのはなぜですか?それを防ぐにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-06 00:32:10443ブラウズ

Why Are My Spring Boot Database Connections Dropping After Inactivity, and How Can I Prevent It?

Spring-Boot で設定された時間枠を超えてデータベースへの接続が切断されました

JPA と Hibernate を使用した Spring-Boot アプリケーションでのデータベースへの接続は、インタラクション間の時間が特定の制限を超えると失われます。この問題には、サーバーの "wait_timeout" 値の超過による接続の問題を示すエラー メッセージが伴うことがよくあります。

この問題に対処するために、Spring の testOnBorrow プロパティと validationQuery プロパティの使用は推奨されません。代わりに、より堅牢な解決策は、次の設定を構成することです:

  • spring.datasource.url = jdbc:mysql://localhost:3306/test?autoReconnect=true: JDBC での自動再接続を有効にするURL.
  • spring.datasource.test-while-idle=true: 接続中に接続をテストします。 idle.
  • spring.datasource.test-on-borrow=true: プールから借用される前に接続をテストします。
  • spring.datasource.validation-query=SELECT 1: 検証を使用する接続を確認するためのクエリvalidity.
  • spring.datasource.time-between-eviction-runs-millis=5000: 接続検証チェックの頻度を指定します。
  • spring.datasource.min-evictable-idle-time- millis=60000: 接続がチェックされて接続から削除されるまでのアイドル時間制限を定義します。 pool.

トランザクション中のアクティブな接続に関する潜在的な問題を防ぐために、トランザクションの開始時に接続を検証し、必要に応じて新しい接続を取得することをお勧めします。

これらの構成設定接続の定期的な検証が有効になり、古い接続がプールに蓄積されるのを防ぎます。その結果、アクティビティが長期間行われない場合でも、データベースへの接続は安定した状態を維持する必要があります。

以上がSpring Boot データベース接続が非アクティブになった後に切断されるのはなぜですか?それを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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