前提・実現したいこと
会員制サイトを運用していたところ、突然下記のエラーが表示されページの閲覧ができなくなりました。
下記エラーの解消方法を教えてください。
発生している問題・エラーメッセージ
エラー!: SQLSTATE[HY000] [1040] Too many connections
試したこと
エラー表示されたメッセージ元に調べてみたところ、DBの接続数上限に達しているため表示されるエラーだということがわかりました。
そこでphpMyAdminにアクセスし、下記コマンドを実行し確認しました。
sql
1show global status like 'Threads_connected' 2show global variables like 'max_connections'
結果、上限値が500でした。
そして、現在接続されている数がアクセス者が0の状態でもどんどん上昇し500になって閲覧不能になります。
数分するとサイトの閲覧が可能になるため再びコマンドを実行し現在の接続数を確認すると300くらいに下がっていて、
またそこからみるみるうちに上昇して再び500になります。
Googleアナリティクスを見ていても閲覧者は自分のみで、そのほかに閲覧をしている人はいません。
※たまに自分以外にいますが深夜に確認しているのもあって1人~2人たまにいるくらいです。
そして自分もサイトを閉じてしばらく放置してから確認してもこの現象は止まりません。
レンタルサーバーを利用しているため、レンタルサーバーの管理画面からみられるアクセス情報を見ると、1月10日からリクエストが急上昇しており、もともとのリクエスト量の平均が3000~5000だったところから1月12日には約19000にものぼっています。
これが何か関係があるのかどうかはわかりませんが、明らかに数値が異常なため念のため記述します。
サイト自体は1月1日あたりに公開したばかりで現在の会員登録者数は150人程度。
現時点での1日の平均PV数は1000~2000程度です。
DBの接続上限数を上げてみようと試みましたが、レンタルサーバーのためかphpMyAdminのコンソールからコマンドを実行しても下記エラーが表示されるだけで更新はできませんでした。
#1227 - アクセスは拒否されました。この操作には SUPER 権限が(複数の場合はどれか1つ)必要です。
また、PHPでDBへ接続したあと、接続を閉じる処理を行っていなかったため、それが原因かと思い、
インクルードで全てのページの最下部に下記の処理を追加し接続を閉じるように記述しました。
PHP
1$〇〇〇 = null; 2$△△△ = null; 3・ 4・ 5・ 6$DBh->close();
しかし、やはりこれでも解決はせず、どこに原因があるのかすら突き止められずにいます。
この原因と対策がわかる方、ぜひご教示お願い致します。
補足情報(ツールのバージョンなど)
・PHP:71
・phpMyAdmin:4.8.0
・レンタルサーバー:coreserver ※利用しているのはCORE-Miniプランです。
ちなみに後から気づいたのですが、同じこのレンタルサーバー上で管理している別ドメイン・別DBのサイトも全く同じ症状が発生しておりました。
別ドメインのもので、1つはデータベースに接続するサイトではなかったためエラーになっておらず、
また別のドメインのものはデータベースに接続しているためか同じエラーとなっておりました。
ドメインやDBを跨いで同様のエラー表示になっていたため、
てっきりレンタルサーバー側の障害かと思いましたが、確認してもエラー報告は特になく、おそらく私の管理しているサイトのみで発生しています。
おそらく、レンタルサーバーのためDB上限値は変更できません。
単純に今利用しているレンタルサーバーのプランの限界なのであれば上位のプランに切り替えるだけなのですが、もしそうでないのであればアップデートをしても同様の症状になるかと思います。
どうかこの原因がわかる方がいらっしゃいましたらご教示くださいませ。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/12 23:45
2022/01/13 10:40
2022/01/13 11:01