ウェブサイトがダウンしました。最初の 15 分ですること。
· 読了目安 1 分
1 分目:外部から確認する
何かに触れる前に、サイトがすべての人に対してダウンしているのか、自分だけなのかを確認してください。ご自身のブラウザー、ネットワーク、DNS キャッシュは、思っている以上に頻繁に実態と食い違います。ウェブサイトダウンチェッカーを実行してください。中立的な拠点からサイトを取得し、ステータスコード、名前が名前解決されるか、証明書が有効か、応答にどれくらいかかったかを表示します。
- 外部からは稼働していて、自分だけダウン: 問題は自分側にあります。キャッシュなしで再読み込み(Ctrl+Shift+R)し、Wi-Fi を切ったスマートフォンで試し、DNS キャッシュを消去し、VPN とブラウザーの拡張機能をオフにしてください。完了です。
- 外部からもダウン: 先に進みます。結果によって、すでに絞り込めています。障害のパターンごとに、それぞれ特徴があるためです。
2 分目:エラーを読む。原因が書かれています
- 「このサイトにアクセスできません」、DNS_PROBE_FINISHED_NXDOMAIN: ドメインが名前解決されません。期限切れのドメイン、レコードの欠落、ネームサーバーの変更。ガイド:DNS_PROBE_FINISHED_NXDOMAIN。
- ERR_CONNECTION_REFUSED: サーバーは動いていますが、待ち受けているウェブサーバーがありません。ガイド:ERR_CONNECTION_REFUSED。
- タイムアウト、何も読み込まれない: サーバーの電源が切れているか、ファイアウォールがすべてを破棄しています。このページの、下のステップ 3 をご覧ください。
- 「接続がプライベートではありません」: 証明書が期限切れか、間違っています。ガイド:「接続がプライベートではありません」。
- 502 Bad Gateway: ウェブサーバーは動いていますが、背後のアプリケーションが動いていません。ガイド:502 Bad Gateway。
- 503 Service Unavailable: 過負荷、メンテナンスモード、ホスティングの制限。ガイド:503 Service Unavailable。
- 504 Gateway Timeout: アプリケーションは応答しますが、遅すぎます。ガイド:504 Gateway Timeout。
- 500 Internal Server Error、真っ白なページ: アプリケーションがクラッシュしました。プラグイン、アップデート、PHP のバージョン。このページの、下のステップ 5 をご覧ください。
3 分目:何が変わったか?
障害には原因があり、原因はたいてい、最後に変わったものです。この順に、自問してください。今日、ドメインや証明書が期限切れになりませんでしたか? 自分または自動処理が、何か(WordPress 本体、プラグイン、PHP、オペレーティングシステム)を更新しませんでしたか? DNS、ファイアウォール、設定ファイルを変更しませんでしたか? 未払いの請求書はありませんか? トラフィックが急増しませんでしたか(ニュースレター、キャンペーン、どこかでの言及)? どれか思い当たることがあれば、そこから始めてください。
5 分目:5 つのチェック、可能性の高い順
1. ドメインと DNS
dig +short example.com A
whois example.com | grep -iE 'expir|status'
応答がない、または clientHold:ドメインが期限切れか、レコードがなくなっています。レジストラで更新するか、A レコードを作り直してください。サーバー上のことは、何も役に立ちません。
2. 証明書
SSL チェッカーが、有効期限、チェーン、名前を数秒で表示します。期限切れなら、更新する(sudo certbot renew && sudo systemctl reload nginx)か、ホスティング会社の管理画面で再発行してください。
3. サーバーはそもそも動いているか?
ping -c 3 example.com
ssh user@example.com
ping も SSH も応答しない:マシンの電源が切れているか、手前のネットワークがダウンしているか、ホスティング会社で障害が起きています。ホスティング会社のステータスページと、クラウドコンソールを確認してください(VM は動いているか? 請求書の支払いに失敗していないか?)。フリーズしている場合は、コンソールから再起動してください。
4. ウェブサーバーは動いているか、ディスクは満杯ではないか?
systemctl status nginx apache2 php8.3-fpm mysql mariadb 2>/dev/null | grep -E 'service|Active'
df -h
free -m
sudo tail -n 30 /var/log/nginx/error.log
停止したサービス:起動してから、journalctl -u SERVICE -n 50 を読んで、停止した理由を確認します。満杯のディスクは、データベースや PHP が停止する最も多い原因です。容量を空けて(sudo journalctl --vacuum-size=200M、古いバックアップとログの削除)、サービスを再び起動してください。再読み込みの前には、必ず sudo nginx -t または sudo apachectl configtest を実行してください。
5. アプリケーション:アップデート、プラグイン、PHP
アップデート直後の 500 や真っ白なページは、リクエストのたびにアプリケーションが失敗していることを意味します。PHP のエラーログを見るか、WordPress のデバッグを短時間オンにします。
// wp-config.php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
そのうえで、wp-content/debug.log を読みます。致命的エラーに、プラグインまたはテーマの名前が書かれています。SFTP または SSH でそのフォルダー名を変更する(wp-content/plugins/name を name.off に)と、サイトが戻ります。WP-CLI の場合:wp plugin deactivate name。エラーに、存在しない PHP の関数が出ている場合は、PHP のバージョンが変わっています。ホスティング会社の管理画面、またはプール設定で、元に戻してください。
10 分目:周囲に伝える
作業している間、顧客はページを更新し続け、受信トレイは埋まっていきます。短く落ち着いた 1 通のメッセージで、1 時間分の返信を省けます。顧客が見る場所に載せてください。ステータスページ、SNS のプロフィール、自動返信。
現在、ウェブサイトをご利用いただけません。状況は把握しており、対応中です。ご注文やメッセージが失われることはありません。復旧しましたら、こちらでお知らせします。ご不便をおかけし、申し訳ありません。
モニターから自動で更新されるステータスページは、これを事前に代わりに行います。
12 分目:ホスティング会社の問題の場合
共有ホスティングでは、上の手順の大半は、お客様が実施できるものではありません。外部からのチェックでダウンと出て、アカウントに制限の表示がなく、お客様側で何も変わっていない場合は、ホスティング会社が対応する必要があります。作業に使える情報を送ってください。
お世話になっております。ウェブサイト example.com が、14:30 UTC 頃からダウンしています。外部からのチェックでは、接続がタイムアウトしました(または:502 Bad Gateway/証明書の期限切れ/名前解決されない)。アカウント内では何も変更していません。サーバーを確認し、復旧したときと、原因をお知らせいただけますでしょうか。
時刻、正確なエラー、外部からチェックしたという事実を含めてください。この 3 つが揃ったチケットは、一度のやり取りで処理されます。
15 分目:修復を任せ、次回は先に知る
ご自身のサーバー、または SSH アクセスのあるウェブスペースなら、上の手順を自分で行う必要はありません。Quick Fix が、一般的な原因を定額で対応します。設定テストに合格した後で停止したサービスを再起動し、満杯のディスクを空け、期限切れの証明書を更新します。それで足りない場合は、Deep Fix が 24 時間体制で引き継ぎ、15 分単位で請求し、料金は依頼の前に表示されます。そして、障害がどのように終わっても、ウェブサイト監視は、無料プランでもサイトを 5 分ごとにチェックし、メールとアプリでアラートを出すので、次回は顧客より先に知ることができます。
次のステップ
ダウンしても、すぐ対応します。
ご自身のサーバー、または SSH アクセスのあるウェブスペースが対象です。一般的な原因には定額の Quick Fix、それ以外には 15 分単位で請求する Deep Fix を、24 時間体制でご用意しています。ご依頼の前に料金が表示されます。
修復を依頼する