RDS DB インスタンスで DB への接続が切断されたのはなぜですか?

最終更新日: 2022 年 7 月 19 日

Amazon Relational Database Service (Amazon RDS) のデータベース接続が突然切断され、予期しないダウンタイムが発生しました。DB 接続が切断されたのはなぜですか?

解決方法

Amazon RDS DB 接続は、さまざまな理由で切断される可能性があります。DB 接続が切断された原因を把握するには、DB 接続が RDS DB インスタンスのメンテナンス時間中またはメンテナンス時間外に切断されたかどうかを判断します。

RDS メンテナンス時間中に DB 接続が切断された場合

DB インスタンスのメンテナンス時間中、AWS は DB 接続の切断につながる可能性のあるメンテナンスアクティビティを実行します。

マイナーバージョンの自動アップグレード (Amazon RDS で有効になっている場合)

Amazon RDS が新しい優先マイナーエンジンバージョンを指定し、DB インスタンスが以前のバージョンを実行している場合、自動マイナーバージョンアップグレード機能がオンになっている場合、Amazon RDS は予定されたメンテナンス時間中にアップグレードを実行します。エンジンレベルのバージョンアップグレードには RDS のダウンタイムが伴うため、マイナーバージョンのアップグレード中に DB 接続が切断される可能性があります。

ハードウェアのメンテナンス

Amazon RDS は、DB インスタンスの基盤となるホストが劣化したハードウェアで実行されている場合に、ハードウェアのメンテナンスをスケジュールします。ハードウェアメンテナンスは、DB インスタンス用に設定されたメンテナンス時間中に実行されます。メンテナンスがスケジュールされる前に、スケジュールされたハードウェアメンテナンスウィンドウに関する E メール通知がユーザーに送付されます。これには、メンテナンスの時間と影響を受けるアベイラビリティーゾーンが記載されています。

オペレーティングシステムのメンテナンス

Amazon RDS は、DB インスタンス用に設定されたメンテナンス時間中に、基盤となるオペレーティングシステムの更新を定期的に実行します。オペレーティングシステムの更新にダウンタイムが含まれる場合、Amazon RDS は次のメンテナンス時間帯にメンテナンスをスケジュールします。オペレーティングシステムの更新にメンテナンスが必要ない場合は、希望するメンテナンス時間を調整してメンテナンス時間を延期できます。メンテナンスが必要な場合、オペレーティングシステムの更新は延期できず、更新はその後のメンテナンス時間帯に適用されます。

「次のメンテナンス時間に適用」を選択して Amazon RDS で実行された変更

RDS 設定の変更を実行する場合、変更をすぐに適用するか、次のメンテナンス時間帯に適用するかを選択できます。次のメンテナンス時間帯に変更を実行することを選択した場合、即時のダウンタイムは発生しません。次の変更を行なう場合、次のメンテナンス時間帯に適用するとダウンタイムが発生する可能性があります。

  • DB インスタンス識別子の名前を変更する
  • DB インスタンスクラスの変更
  • バックアップ保持期間の変更
  • DB ポートを変更する
  • DB エンジンのバージョンの変更
  • 新しいサブネットグループのアタッチ

DB インスタンスの影響とダウンタイムとともに、変更可能な詳細設定を理解するには、DB インスタンスの設定情報を参照してください。

DB 接続が RDS メンテナンス時間外に切断された場合

DB 接続がクライアント/サーバー側のタイムアウトに達すると、DB 接続が切断される可能性があります。

アプリケーション側で設定されるクライアントタイムアウトパラメータ

アプリケーション側でクライアントタイムアウトパラメータを設定すると、DB 接続が切断される可能性があります。クエリの処理時間が長すぎると、クライアントからセッションが誤って終了する場合があります。この問題を解決するには、クライアントのタイムアウト設定値を増やします。

Amazon RDS にアタッチされたカスタムパラメータグループで設定されたサーバータイムアウトパラメータ

TCP キープアライブを積極的に設定すると、クライアント接続のタイムアウトにつながります。タイムアウトは、tcp_keepalives_idle で設定された時間と tcp_keepalives_count で設定されたメッセージ数だけクライアントがアイドル状態になったときに発生します。タイムアウトは、長時間実行されるクエリが DB インスタンスで実行されている間に接続がサーバーの応答を待っている場合にも発生する可能性があります。

idle_in_transaction_session_timeout がデフォルトの 24 時間よりも小さい値に設定されている場合、設定値を超えてアイドル状態になっているセッションはすべて終了します。この値を積極的に設定した場合、実行中のクエリがサーバーからの応答を得るためにより多くの時間を必要とする場合でも、セッションが設定されたタイムアウト値よりも長くアイドル状態になると、接続が切断されます。

予定外の DB 再起動/フェイルオーバー

基盤となるハードウェアに一時的な問題があると、DB インスタンスとの通信が失われる可能性があります。ハードウェアの問題により、基盤となるホストを置き換えることで、マルチ AZ 配置でフェイルオーバーが開始され、シングル AZ 配置の復旧が開始される場合があります。RDS モニタリングシステムが RDS インスタンスと通信してヘルスチェックを実行できなかったため、この問題により DB インスタンスが異常な状態になる可能性があります。

一時的なネットワークの問題は、DB インスタンスの基盤となるホストに影響します。内部モニタリングシステムはこの問題を検出し、シングル AZ 配置の復旧とマルチ AZ 配置のフェイルオーバーを事前に開始します。

DB インスタンスは、DB の負荷が高くなるとデータベース内のメモリが不足し、RDS モニタリングシステムが基盤となるホストに接続できなくなると、応答しなくなります。データベースの過負荷による DB インスタンスのフェイルオーバーおよび再起動を回避するには、DB インスタンスのメモリパラメータを適切に設定します。

基盤となるストレージサブシステムの一時的な問題により、Amazon Elastic Block Store (Amazon EBS) ボリュームのレイテンシーが上昇する可能性があります。このボリュームは、内部モニタリングシステムによって識別されます。予防的な対策として、モニタリングシステムはシングル AZ 配置の復旧を開始します。マルチ AZ 配置では、セカンダリへのフェイルオーバーが実行されます。