【当ブログではアフィリエイト広告を利用しています】

[MySQL] 「データベースに接続できません」の対策でパフォーマンスチューニング(max_connections、wait_timeout)

attention この記事は2年以上前の投稿になります。
記載された情報が古くなっている可能性がございますので十分ご注意ください。

WordPress 等の MySQL を利用しているサイトでは、アクセス数が多くなると「データベースに接続できません」のエラーが発生することがあります。

これは、MySQLへの同時接続数がオーバーしたことでも発生します。
※もちろん全てがこの原因ではないですよ。

これに対応するために、MySQLのチューニングを行いましょう。(チューニングが行えないサーバーもあるので注意)
具体的には、この2つのパラメーターを調整します。

  • [max_connections]:MySQLへの最大同時接続数 (初期値:32)
  • [wait_timeout]:MySQLとの通信が無くなってから切断するまでの秒数 (初期値:28800)

なぜ、[wait_timeout]まで変更するかというと・・・初期値に注目してください。
28800 秒 = 8 時間 です。
アクセス過多の状態の場合は、よく処理待ちのままプロセスが残ってしまう場合があります。
そもそも、データベースのアクセスにそんなに時間が必要な処理はないはずなので、適当設定で自動切断して接続数を回復させてあげましょう。

 
設定の変更方法は、サーバー内の/etc/my.cnfを編集すれば可能です。
※サーバーにより、場所などが違う場合があります。

[mysqld]
max_connections = 64
wait_timeojut = 120

接続数は倍に、タイムアウトは120秒に設定してみました。
接続数は増やしすぎるとメモリ喰いつぶして、サーバー全体の機能低下を引き起こす可能性がありますので、やみくもに上げないようにしてください。

ご意見・ご感想をお待ちしております。

いただいた情報は一般公開されません。(入力いただいたメールアドレスにてご返信させていただきます)
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。