ICTSC2026 一次予選 問題解説: 問34

問34

MySQLサーバーに接続しているWEBサーバー上で以下のエラーが発生し、リクエストを処理出来なくなってしまいました。

ERROR 1040 (HY000): Too many connections

MySQL サーバー自体は起動しており、CPU・メモリにも大きな負荷は見られません。

このとき、トラブルシューティングとして最初に確認する内容として最も適切なものを選びなさい。

選択肢(択一選択)

  1. max_connections を十分大きな値に変更して MySQLプロセスを再起動する
  2. 管理者用アカウントで MySQL に接続し、現在の接続数や接続中のセッションを確認して、異常に接続を保持しているクライアントがないか調査する
  3. MySQL のデータディレクトリを削除して初期化する
  4. innodb_buffer_pool_size を小さくしてコネクションあたりにかかるサーバーの負荷を軽減する。

正解

2

解説

Too many connectionsは、コネクション数がmax_connectionsで設定された上限に達し、新たなコネクションを受け付けられないことを示す。CPUやメモリの使用率が低くても発生するため、まず現在のコネクション数やセッションの状況を確認し、異常にコネクションを保持しているクライアントがないか調査する必要がある。

なお、MySQLにはCONNECTION_ADMIN権限(旧来のバージョンではSUPER権限)を持つアカウント向けに、通常のコネクション数の上限に加えて1コネクション分の枠が用意されている。この枠が空いていれば、通常の接続枠が埋まっていても管理者は調査できるようになっている。

他の選択肢が適切でない理由は以下の通りである。

  • 選択肢1:アプリ側でのコネクションの解放漏れが原因なら、上限を増やしても再発する可能性があるため、先に原因を調査するべき。
  • 選択肢3:データディレクトリの削除はデータ喪失につながり、コネクション数が増えた原因の解消にはならない。
  • 選択肢4:innodb_buffer_pool_sizeはデータやインデックスのキャッシュ領域の大きさであり、本件には関連しない。

したがって、まずコネクションの状況を確認して原因を調査する 2 が正答である。