Amazon RDS MySQL DB インスタンスへの接続時に発生する「MySQL server has gone away」エラーの解決方法を教えてください。

所要時間1分
0

MySQL を実行している Amazon Relational Database Service (Amazon RDS) DB インスタンスにクエリを実行しようとしましたが、 「MySQL server has gone away」または「Lost connection to server during query」というエラーメッセージが表示されました。

簡単な説明

サーバーがタイムアウトして接続を閉じると、次のエラーのいずれかが表示されることがあります。

  • CR_SERVER_GONE_ERROR - The client couldn't send a question to the server.
  • CR_SERVER_LOST - The client didn't get an error when writing to the server, but the client didn't get a full answer (or any answer) to the question.

詳細については、MySQL ドキュメントの「MySQL server has gone away」を参照してください。

解決策

これらのエラーの原因と解決方法については、以下を参照してください。

  • 接続のアイドル状態が長すぎると、接続はクライアントから誤って終了する可能性があります。この問題を解決するには、アプリケーションのタイムアウトが MySQL のタイムアウトよりも短いことを確認し、アプリケーションがアイドル状態の接続を閉じることを確認します。
  • 接続がタイムアウトした場合は、カスタムパラメータグループを使用して wait_timeout パラメータおよび interactive_timeout パラメータの値を大きくして MySQL のタイムアウト時間を長くします。詳細については、「パラメータグループを使用する」を参照してください。
  • エラーが発生するクエリが大規模データセットを取得するものである場合は、カスタムパラメータグループを使用して max_allowed_packet サイズのパラメータを大きくする必要がある場合があります。詳細については、「Modifying parameters in a DB parameter group」を参照してください。
    注: Amazon Aurora では、パラメータを変更してクラスターパラメータグループに設定し、クラスターレベル全体に適用できます。DB パラメータグループに設定すると、パラメータはインスタンスレベルでのみ適用されます。Amazon Lightsail MySQL データベースでは、コマンドラインインターフェイス (CLI) を使用してパラメータを変更する前に、パラメータを変更できるかどうかを確認する必要があります。詳細については、「](https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-updating-database-parameters)Updating database parameters in Amazon Lightsail[」を参照してください。Lightsail インスタンスまたはサーバーローカル MySQL データベース、または Amazon Elastic Compute Cloud (Amazon EC2) MySQL の場合、設定ファイルでパラメータを設定できます。通常のオンプレミス MySQL環境での設定と同様に、グローバル xxx を設定することもできます。
  • 大きなデータセットを返すときにのみエラーが発生する場合、クライアントは大きい MTU 値 9001 を使用している可能性があります。この問題を解決するには、クライアントの TCP/IP MTU 値を小さくします。クライアントの MTU 値の変更については、「インスタンスの MTU の設定」を参照してください。
  • init_connect パラメータが、処理できない値に設定されていると、関連するクライアントの接続に失敗することがあります。すべての init_connect パラメータが正しく処理されていることを確認してください。init_connect パラメータとして参照される手順に対する EXECUTE アクセス許可がユーザーにあることを確認してください。
  • すべての接続が同時に切断されている場合は、この問題が発生したときに他の接続が引き続き動作していることを確認します。この問題を解決するには、Amazon RDS イベントを表示して MySQL エラーログをチェックし、MySQL DB インスタンスがクラッシュまたはフェールオーバーしていないことを確認してください。

関連情報

MySQL データベースエンジンを実行している DB インスタンスへの接続

Amazon RDS DB インスタンスを変更する

コメントはありません

関連するコンテンツ