アプリケーションが未使用の接続を閉じることができない場合、wait_timeout
が低くなります 値は、許可された接続数を超えないようにするのに役立ちます。このvakueを設定するには、次の手順を使用します。
-
SecureShell®(SSH)を使用してサーバーにログインします。
-
sudoコマンドを使用して
my.cnf
を編集します 、MySQL®構成ファイル。$ sudo vi /etc/my.cnf
-
タイムアウト構成を見つけて、サーバーに合わせて調整します。
wait_timeout = 28800 interactive_timeout = 28800
-
interactive_timeout
値はWebアプリケーション接続には影響しません。低いwait_timeout
通常のベストプラクティスです。 -
ステートレスPHP環境は、60秒以下のタイムアウトでうまく機能します。接続プール(Java®、.NET®など)を使用するアプリケーションは、
wait_timeout
を調整する必要があります 接続プールの設定に一致する値。デフォルトの8 hours = 28800
秒は、適切に構成された接続プールで適切に機能します。 -
wait_timeout
を構成します 安全チェックとして、アプリケーション接続プールの予想される接続寿命よりもわずかに長くなります。 MySQLを再起動する必要がないため、値をオンラインで変更することを検討してください。サーバーの実行中にダウンタイムを発生させることなく値を調整できます。値をset global wait_timeout=60
に変更します 、および新しく作成されたセッションはそれを継承します。必ずmy.cnf
の設定を保持してください 。既存の接続はすべて、wait_timeout
の古い値に到達する必要があります アプリケーションが接続を放棄した場合。トランザクション中にローカル処理が長くなるレポートジョブがある場合は、そのようなジョブにset session wait_timeout=3600
を発行させることを検討してください。 接続時。
-
-
変更を保存して、エディターを終了します。
-
次のコマンドを使用してMySQLを再起動し、必要に応じて変更を適用します。
$ sudo /etc/init.d/mysql restart