/12分で読めます

なぜWebサイトはダウンするのか?Website MonitoringとUptimeの仕組み

Webサイトが読み込めないとき、最初に知りたいのは「全員にとって落ちているのか、自分だけなのか」です。サイトが落ちる理由、状態確認の方法、uptimeの意味を理解すると、訪問者でもサイト運営者でも原因を素早く切り分けられます。

全員にとってダウンしている?それとも自分だけ?

Webサイトが読み込めない原因は、あなた側のネットワーク、ISP、DNS、ブラウザ、cache、firewall、VPNにあるかもしれません。逆に、サーバー側でサイト自体が利用不能になっている場合もあります。原因の場所によって対処法はまったく変わります。

全員にとって落ちているのか、自分だけなのか?

Scenario A: 全員にとってダウン
  あなたも他のユーザーもサイトへ到達できない。
  サーバーが503を返す、timeoutする、または応答しない。
  問題はサーバー側にある。訪問者は通常、復旧を待つしかない。

Scenario B: 自分だけアクセスできない
  他のユーザーはアクセスできるが、自分だけ開けない。
  サーバーは稼働しているが、DNS、ISP、browser、firewall、cache、VPNが経路を妨げている。

見分け方:
  1. Wi-Fiではなくmobile dataなど、別のnetworkで試す。
  2. オンラインの "Is It Down" checkerを使う。
  3. 他の人に同じサイトを開いてもらう。
  4. 公式status pageがあれば確認する。

Webサイトがダウンする理由

Webサイトは複数の仕組みがつながったchainです。重要な部分が1つでも失敗すると、ページは表示されないことがあります。通常、ページを見るまでには次の処理が成功する必要があります。

Webサイト表示に必要なもの:

入力: example.com

Step 1: DNS resolution
  DNS resolverがserver IP addressを見つける。
  失敗するとDNS_PROBE_FINISHEDやNXDOMAINとして見えることが多い。

Step 2: TCP connection
  端末がserverへ接続する。通常はport 443。
  失敗するとconnection timed outになりやすい。

Step 3: TLS handshake
  browserとserverが暗号化設定とcertificateを確認する。
  certificateの期限切れや設定ミスはsecurity warningになる。

Step 4: HTTP request
  browserがhost name付きでGET /を送る。
  serverはHTTP status codeを返す。

Step 5: Application processing
  web server、app server、database、APIがpageを生成する。
  bugや過負荷は500、502、503 errorになりやすい。

Step 6: Response delivery
  HTML、CSS、JavaScript、images、CDN assetsが返る。
  一部だけ失敗すると、壊れたページやtimeoutになる。

HTTP Status Code: 数字の意味

サーバーが応答すると、HTTP status codeを返します。この3桁の数字は何が起きたかを示し、Webサイトが動かない理由を診断する最速の手がかりになります。

成功応答とRedirect

CodeName意味
200OKサイトは動作しており、requestは成功した。
301Moved Permanentlyページは新しいURLへ移動し、browserはredirectすべき。
304Not Modifiedcache版がまだ有効なので、browserは再download不要。

Client Error

CodeName意味
400Bad Requestrequestが不正でserverが理解できない。
401Unauthorizedアクセス前に認証が必要。
403Forbiddenそのresourceへアクセスする権限がない。
404Not Foundページが存在しない、URLが誤っている、または削除された。
408Request Timeoutserverがrequest完了を待ちすぎた。
429Too Many Requestsrequestが多すぎてrate limitされている。

Server Error: サイトがダウンまたは不健康

CodeName意味
500Internal Server Errorserver側でbug、設定ミス、未処理例外などが起きた。
502Bad Gatewayproxyやload balancerがupstream serverから不正な応答を受けた。
503Service Unavailableserverが過負荷、maintenance中、または一時的に応答不能。
504Gateway Timeoutproxyやload balancerがupstream serverの応答を待ちすぎた。

Website Monitoringの仕組み

Website monitoringは、決められた間隔でサイトを確認し、利用不能、遅い、期待と違うresponseを返す、といった状態を検出して運営者へ通知します。

Uptime monitoringの一般的な流れ:

1. monitoring serviceが1-5分ごとにURLをcheckする。
2. HTTP status code、response time、error messageを記録する。
3. false alarmを減らすため、複数locationから失敗を確認する。
4. email、SMS、Slack、PagerDutyなどへalertを送る。
5. incident、SLA、長期的な信頼性分析のためにuptime reportを保存する。

良いmonitoringは「ページが開いたか」以上を確認する:
  - status codeは正しいか?
  - responseは十分速いか?
  - page内に期待するtextがあるか?
  - certificateの期限は近くないか?
  - DNS resolutionは正常か?

Uptimeの計算: 99.9%の本当の意味

Uptimeは、サービスが利用可能だった時間の割合です。数字は小さな差に見えても、年間downtimeでは大きな違いになります。

Uptime年間downtime目安月間downtime目安
99%約3.65日約7.3時間
99.9%約8.76時間約43.8分
99.99%約52.6分約4.4分
99.999%約5.26分約26秒
Uptime formula:

uptime % = available time / total time x 100

Example:
  30日間 = 43,200分
  downtime = 45分
  uptime = (43,200 - 45) / 43,200 x 100
         = 99.8958%

99.9%でも十分とは限らない

99.9% uptimeを約束するproviderでも、年間約8.76時間のdowntimeは許容されます。それが最も売上が大きい日に集中すると、数字以上の影響になります。Uptime percentageは「いつ落ちたか」を表さず、実際にはタイミングが総時間より重要なことがあります。

Webサイトがダウンしているか確認する方法

サイトが開かないときは、感覚で判断するより複数の観点から確認する方が確実です。

確認checklist:

1. ページを再読み込みする。
2. private/incognito windowで開く。
3. 別のbrowserで試す。
4. Wi-Fiではなくmobile dataで試す。
5. VPNやproxyを一時的に切る。
6. DNS cacheをclearする。
7. online website down checkerを使う。
8. status pageや公式SNSを確認する。

よくある結果:
  200 = OK
  5xx = server error
  failed = browserが接続できなかった可能性が高い

Downtimeのよくある原因

原因症状運営者が確認すること
Server overload遅い、timeout、503traffic spike、CPU、memory、queue、autoscaling
Application bug500 error、特定ページだけ失敗logs、recent deploy、exception tracking
Database issuelogin不可、checkout失敗、504connections、slow queries、replication、locks
DNS problemdomainが解決できない、NXDOMAINDNS records、nameserver、TTL、domain expiry
TLS certificate issuesecurity warning、HTTPS不可certificate expiry、chain、hostname mismatch
CDN or proxy outage一部地域だけ失敗、502/503CDN status、origin health、cache rules
DDoS or attack大量traffic、429/503WAF logs、rate limits、mitigation provider
Expired domainsiteがparking pageへ変わるregistrar status、auto-renewal、WHOIS

サイトが読み込めないときにできること

訪問者としてできることは限られますが、自分側の問題かサーバー側の問題かはかなり切り分けられます。

訪問者が試せること:

Local checks:
  - reloadする
  - browser cacheをclearする
  - 別browserで開く
  - VPN/proxyを切る
  - DNSを変更する

Network checks:
  - mobile dataで試す
  - routerをrestartする
  - 別deviceで試す

External checks:
  - website down checkerで確認する
  - status pageを見る
  - 公式SNSやsupport channelを見る

Downtimeを防ぐ方法

サイト運営者はdowntimeを完全になくすことはできませんが、頻度、影響範囲、復旧時間を大きく減らせます。

Downtimeを減らす実践:

Monitoring:
  - uptime、response time、error rateを監視する。
  - 複数regionからcheckする。
  - alertを担当者へ直接届ける。

Infrastructure:
  - load balancerとhealth checkを使う。
  - autoscalingまたは十分なcapacityを用意する。
  - database backupとreplicationを設計する。

Deployment:
  - stagingでtestする。
  - gradual rolloutやblue-green deploymentを使う。
  - rollbackを簡単かつ速くする。

DNSとdomain:
  - domain registrationのauto-renewalを有効にする。
  - 必要に応じてsecondary DNS providerを使う。
  - TTLを意図して設定する。
  - DNS resolutionをmonitorする。

Backups:
  - databaseとfilesを自動backupする。
  - restoreを定期的にtestする。
  - backupを別regionまたは別providerに保存する。

Downtimeのコスト

Downtimeは単なる不便ではありません。売上、運用、SEO、ユーザー信頼にコストを生みます。

影響詳細
売上損失e-commerceやSaaSでは、利用不能な間にconversion、subscription、transactionを失う。
SEOへの影響長時間または頻繁なoutageと5xx errorsは、search engineのcrawlやrankingに悪影響を与える可能性がある。
ユーザー信頼の低下訪問者はサイトを離れ、事業を信頼しにくくなり、競合へ移ることがある。
SLA penaltySLA commitmentsを持つproviderは、返金やcredit提供が必要になる場合がある。
チームコストengineerが予定作業を止めてurgent incident対応に入る。

記憶に残る大規模outage

大企業でも重大なoutageは起きます。Facebookは2021年10月にBGP関連のincidentで約6時間利用不能になり、Cloudflareは2022年6月に27分のoutageを起こし、AWS us-east-1のincidentはこれまで何度もインターネットの広い範囲へ影響しました。

Webサイトがダウンしているか確認

無料のWebsite Down Checkerで、任意のWebサイトが動作しているか、ダウンしているかを素早く確認できます。HTTP status code、response time、サーバーからの確認結果を、インストールなしで確認できます。

Website Down Checkerを開く

参考資料

  1. Fielding, R. et al. (2022). RFC 9110 - HTTP Semantics (Status Codes). https://datatracker.ietf.org/doc/html/rfc9110#section-15
  2. Google. How Google handles server connectivity issues. https://developers.google.com/search/docs/crawling-indexing/http-network-errors
  3. Cloudflare. What is a 5xx server error?. https://developers.cloudflare.com/support/troubleshooting/cloudflare-errors/troubleshooting-cloudflare-5xx-errors/
  4. AWS. Amazon Compute Service Level Agreement. https://aws.amazon.com/compute/sla/