運営サイトに接続した際、「ERROR SQLSTATE Too many connections」のエラーがでたことがありました。

MySQLサーバーには同時接続可能な最大接続数が設定されており、これを超えた場合にでるエラーが「Too many connections」です。

ERROR SQLSTATE [*****] [1040] Too many connections

MySQLのToo many connections解決方法

「Too many connections」エラーを解決する最も簡単な方法には、MySQLサーバーの設定で、最大同時接続数を増やしてしまう方法があります。最大同時接続数を変更は、MySQLサーバーの構成ファイル「my.cnf」の編集をすることで編集可能です。

max_connections=100

ただし、レンタルサーバやVPSサーバの仕様で最大同時接続数が変更できない場合には、プログラムレベルでSQLへの接続をコントロールすることが必要になります。

Too many connectionsが出るほど訪問者がいない

とはいえ、運営サイトにリアルタイム訪問者が多数生じている様子もなく、F5不正アタックを受けている様子などもありません。

嵐の中で突如発生した「ERROR SQLSTATE Too many connections」

大型の台風15号が関東地方を直撃し、千葉県では未だ停電も続く状況といったニュースをご覧になっていたと思いますが、台風の強風で揺れる雨戸の音に全く眠ることもできず、ディレクトリのメンテナンスなどをやりつつ夜を過ごしていました。

嵐の中、カテゴリ登録サイトのリンクチェックプログラムにLIMIT:100を入れて手動キックし、PCを離れてスマホで台風進路予報を眺めたりしながらプログラムのステータスを見ていところ、突如この「ERROR SQLSTATE Too many connections」が発生するのが確認できました。

cronで走らせる本番用バッチプログラムとは別の、余分な処理を省いた作業用プログラムだったため、何かのタイミングでコードを壊してしまったか?といったことを一瞬思いましたが、更新履歴を見ても問題はなさそうでしたので、急遽大量アクセスが深夜に訪れたといったことを懸念しました。

マウスがチャタリング?

雨風の音も次第に激しくなる中、プロセスを調べようとPCに目をやったところ、先程キックした開発版リンクチェックプログラムの手動実行ボタンがマウスで超高速連打されているのが見えました。

この光景を動画で撮っておけばよかったと後でとても後悔しましたが、触りもしないマウスの左ボタンが超高速で16連射するかのごとく連打を続けており、外の嵐も相まって、それはもう恐ろしい光景だったと今でも覚えています。

すぐに一回カチっと押してみたところ、何事もなかったように静かになってくれました。

正直、静電気でチャタリングとかのレベルではなく、物理的に微妙にひっかかって連打ということがあり得るのか?心霊現象や超常現象を疑いたくなるような凄い光景ではありました。

おわりに

大型の台風15号が関東地方を直撃している中で、MySQLのToo many connectionsが生じたというお話ですが、全く技術的な話ではございませんで失礼致しました。