WordPressサイトが突然表示されなくな
った!
(データベース接続エラーの意味)

関連記事

1. いきなり表示されたエラー画面

いつも通りWordPressで運営しているブログを確認しようとアクセスしたら、見慣れない英語のエラーメッセージが表示されました。

「Error establishing a database connection」

1. いきなり表示されたエラー画面

データベース接続エラー? サイトが完全に見られなくなっていて、一瞬焦りました。

でも、よく見ると面白いことに気づいたんです。同じサーバーで動かしているタイピング練習アプリ(HTMLで作った静的なページ)は、ちゃんと表示されている。

この違いを知ることが、このエラーの正体を理解する鍵になります。

2. WordPressとデータベースの関係

まず、なぜWordPressだけが表示されなかったのか。

レンタルサーバーでは、ウェブサイトを表示する「Webサーバー」と、データを保存する「データベースサーバー」が別々に動いています。WordPressが記事を表示するときは、この2つが連携しているわけです。

WordPressとデータベースの関係 WordPress 動的サイト Webサーバー DB必須 DB障害で表示不可 静的サイト HTMLアプリ Webサーバー DB不要 ファイル直接表示 障害時も表示可能
  • WordPressは「動的サイト」と呼ばれるタイプのウェブサイトです1
    ユーザーがアクセスするたびに、データベースから記事やコメント、設定などの情報を取り出して、その場でページを組み立てています。つまり、データベースとの接続は必須なんです。
  • 一方、タイピング練習アプリは静的なHTMLページでした。
    あらかじめ完成した状態でサーバーに置いてあり、データベースを使わず、ファイルをそのまま表示するだけです。だから、データベースサーバーに問題が起きても、静的ページは平気なんですね。

2.1. エラーが起きた原因を考える

今回のエラーは「データベースに接続できない」というもの。
考えられる原因はいくつかあります。

  • メンテナンスや自動再起動
  • ネットワークの瞬断
  • データベースサーバーの一時的な過負荷
MAX エラーの主な原因 メンテナンス 定期メンテナンス 自動再起動 ネットワーク 通信障害 瞬断 サーバー過負荷 アクセス集中 処理遅延 接続数上限 同時接続超過 共有サーバー影響

レンタルサーバー側で定期的なメンテナンスをしていたり、データベースサーバーが自動で再起動したりすることもあります。その間はもちろん接続できません。あるいは、Webサーバーとデータベースサーバーをつなぐネットワークに、一時的な通信障害が起きた可能性もあります。物理的な問題ではなく、ソフトウェア的な瞬断かもしれません。

また、データベースサーバーには、同時に接続できる数に制限があります2。WordPressサイトへのアクセスが急増したり、プラグインが裏で何度もデータベースにアクセスしたりすると、この上限に達してしまうことがあります。レンタルサーバーでは、1台のサーバーで複数のユーザーのサイトを動かしていることがよくあります3。もし同じサーバー上の誰かのサイトにアクセスが集中したら、データベースサーバーが忙しくなりすぎて、他のサイトの処理が追いつかなくなることがあるんです。

あるいは、WordPressの設定変更後には、注意が必要です。wp-config.phpファイルのデータベース認証情報の誤りです4

3. タイムアウトエラーとサーバー復旧

データベース接続エラーのあと、画面を更新して確認していると、「Request Timeout」というエラーも出ていました。

3. タイムアウトエラーとサーバー復旧

「このリクエストは処理に時間がかかりすぎるため、サーバーによってタイムアウトされました」

これは、サーバーからの応答が遅すぎて、ブラウザが待ちきれなくなった状態です。

さらに、数分後に再度アクセスしたら、サイトは正常に表示されるようになりました。

3. タイムアウトエラーとサーバー復旧

これは、一時的な問題だったことを示しています。
サーバーを再起動するときには、いったんサーバーからの応答がなくなることが多いです。

3.1. データベースサーバー障害と復旧のお知らせ

後日メールを見ると、データベースサーバー障害と復旧のお知らせが届いていました。

自分のエラー表示された時間帯は、午前9時ごろで21:00ごろとは違うのですが、再度 エラー・復旧があったのかもしれません。

4. もし頻繁に起きるなら(データベースアクセスの確認)

今回は単発の障害でしたが、もしこのエラーが頻繁に起きるようなら、対策が必要です5

頻繁に起きる場合の対策 プラグイン チェック 無駄なアクセス削減 不要プラグイン 削除 キャッシュ 導入 DB負荷軽減 キャッシュ プラグイン活用 エラーログ 確認 詳細な原因調査 管理画面から ログ分析

とくに、WordPressのプラグインが無駄にデータベースへアクセスしていないかのチェックも有効です。
不要なプラグインを削除したり、キャッシュプラグインを導入したりすることで、データベースへの負荷を減らせます6

レンタルサーバーの管理画面から、エラーログを確認できる場合があります。そこで、どんなタイミングで何が起きているか詳細を調べられます。

最初は焦ったデータベース接続エラーでしたが、WordPressの仕組みやサーバー環境について理解を深めるいい機会になりました。エラーメッセージは、システムが「ここに問題がある」と教えてくれているサインなんですね。冷静に観察して、何が起きているか推理することで、対処法も見えてきます。

  1. WordPressはページ表示のたびにデータベースから情報を取得してページを生成する動的サイトです。これに対し、HTMLファイルをそのまま表示する静的サイトはデータベース接続を必要としません – How to Fix the Error Establishing a Database Connection in WordPress
  2. 多くのレンタルサーバーでは同時データベース接続数が15〜25に制限されています。例えばHostGatorでは共用サーバーで25接続、GoDaddyでは30接続が上限です。ただし、ほとんどの接続は1秒未満で完了するため、通常のサイトではこの制限に達することは稀です – Web Hosting With The Highest Database Connections Limits
  3. 共用レンタルサーバーでは複数のユーザーが同じデータベースサーバーを共有しており、一つのサイトの負荷が他のサイトに影響を与えることがあります – How To Fix the WordPress “Error Establishing a Database Connection”
  4. データベース接続エラーの最も一般的な原因は、wp-config.phpファイル内のDB_NAME、DB_USER、DB_PASSWORD、DB_HOSTのいずれかが間違っていることです。特にサイト移行後にこのエラーが発生することが多いです – How to fix “Error establishing a database connection” in WordPress
  5. 頻繁にデータベース接続エラーが発生する場合、wp-config.phpファイルにdefine(‘WP_ALLOW_REPAIR’, true);を追加し、yoursite.com/wp-admin/maint/repair.phpにアクセスすることで、WordPressの組み込みデータベース修復ツールを使用できます。修復後は必ずこの行を削除してください – How to Repair WordPress Database Using WP_ALLOW_Repair
  6. データベース接続エラーの原因がプラグインにある場合、wp-content/pluginsフォルダの名前を一時的に変更することで全プラグインを無効化し、原因を特定できます。その後、一つずつプラグインを有効化して問題のあるプラグインを見つけます – 7 Steps to Fix Error Establishing a Database Connection in WordPress