icon

「最適なサービスで一歩先行く組織へ」ビジネスに伴走する課題解決メディアCHECK!

サーバーダウンの原因と防止のための対策とは?

サーバーダウンの原因と防止のための対策とは?

Webサイト運営において、注力すべき事柄のひとつに「サーバーダウン対策」があります。頻繁にサーバーダウンを起こしてしまうと、ユーザーの利便性やサイトの信頼性が低下するだけでなく、経済的な損失にもつながりかねません。今後はさらにWebに接続する人・時間ともに増えていくことが予想されるため、これまで以上にサーバーダウン対策を強化したいところです。ここでは、サーバーダウンの原因と対策を具体的に紹介します。

サーバーダウンとは

まず、サーバーダウンについて基礎的な知識を解説します。サーバーダウンの原因は、主に以下3つが挙げられます。

サーバーダウンの種類

●アクセス集中
最もポピュラーなサーバーダウンの原因が「アクセス集中」です。一定時間内に、サーバーが想定する以上のアクセスが集中することで、「503エラー」と呼ばれるエラーページが表示される状態になります。厳密にいえば、サーバーの処理が追い付いていない状態や、サーバーの設定以上のアクセスを制限している(同時アクセス制限)状態を指すことが多いでしょう。

●サーバーの故障
経年劣化などによって、サーバーに物理的な故障が発生した状態です。サーバーには、電源・マザーボード・ハードディスク・冷却ファン・NIC(ネットワークインターフェースカード)などの有寿命部品が複数組み込みまれており、これらが故障することでサーバーダウンを引き起こすことがあります。また、自然災害によるネットワークや機器の損傷、電源喪失など環境的なトラブルもあり得るでしょう。

●サイバー攻撃
悪意を持った攻撃者によるサイバー攻撃によってサーバーがダウンしてしまうこともあり得ます。DoS攻撃やDDoS攻撃といった、大量のトラフィックを発生させることでサーバーに負荷をかけたり、ネットワークの帯域をパンクさせたりすることでアクセスできない状態にさせる手法が代表的です。その他にも不正侵入などによって、故意にサーバーダウンをさせるようなことも考えられます。

サーバーダウンの弊害

サーバーダウンが頻繁に起こると、次のような弊害が生じます。

●経済的損失
ECサイトの場合はサーバーダウンによって商品の購入が不可能になり、機会損失が発生します。また、有料のWebサービスの場合でも、サーバーダウンが起こることで契約継続率の低下を招くリスクがあるでしょう。さらに、復旧作業に人的コストがかかることも見逃せません。

●閲覧者の離脱
夜間帯や休日など、とくにアクセスが増える時間帯にサーバーダウンが頻発すると、ユーザーは「いつみても重い、つながらない」という印象を抱きがちです。こうした悪いイメージからアクセス頻度が減り、いずれは閲覧を辞めてしまう可能性があります。

●本業の信頼性が低下
Webサイトは今や「企業の顔」とも言える存在です。Web上で製品・サービスを販売していない場合でも、サーバーダウンが頻繁に起こることで信頼性が低下し、本業に悪影響を与える可能性があります。

アクセス集中によるサーバーダウンを防ぐ方法

前述の3つの原因のうち、物理的な故障は機器やシステムの冗長化を行うことでリスクを下げ、サイバー攻撃についてはセキュリティ対策の導入によって予防する必要があるでしょう。
ここでは、「アクセス集中」によるサーバーダウンの予防策についてみていきます。ここでは、一般的なアクセス集中対策を提示と併せて、Webサイトの種別ごとに注意すべきポイントを解説します。

一般的なアクセス集中対策

●サーバーのスペック向上/専用サーバーへの切り替え
アクセス集中による「503エラー」は、厳密にいえば「Webサイトのデータを読み込むユーザーが制限数を超えた」ことによる接続制限です。そのため、サーバーの処理能力や接続数によって発生頻度が変わります。一般的には、安価なレンタルサーバーの共用プランで発生しやすいようです。もし、レンタルサーバーの共用プラン環境で503エラーが頻発するようなら、処理能力の高いプランや、ベアメタルサーバーといった専用サーバーなどへ切り替えることで解決する可能性が高いです。

●広帯域のネットワークを確保
インターネットに接続する帯域が細かったり、月間で転送量に制限があったりする場合、ネットワークがボトルネックになっている可能性もあります。1Gbpsといった広帯域の回線で提供している事業者もいるため、契約しているサーバーのインターネット回線が心細い場合は乗り換えを検討してみましょう。

●機能分割
Web・アプリケーション・DBなど、Webサイトの中で担う機能によってサーバーを分割します。それぞれの機能を担うサーバーのリソースが確保されることで負荷が分散され、サーバーダウンのリスクを減らすことができます。

●ロードバランサによる負荷分散
ロードバランサとは、アクセス集中などによる負荷を、複数のサーバーへ振り分けるための装置です。もし万が一サーバーの一部がダウンしたとしても、ダウンしていないサーバーへとアクセスを振り分けられるため、Webサイト・サービスの継続性を高めることができます。アクセス集中によるサーバーダウンを回避するために、非常に重要となる仕組みです。ロードバランサの主な機能は以下3つです。

・ロードバランシング
文字通り「ロード(負荷)」「バランシング(調整、分散)」する機能で、ロードバランサの主機能になります。ロードバランシングの負荷分散方法は、大きく分けて「スタティック(静的分散)」と「ダイナミック(動的分散)」の2種類があります。
スタティックな分散方式は、あらかじめ設計者が決めた順序に従って振り分ける方式です。例としては、全サーバーに対し平等に負荷を割り振る「ラウンドロビン方式」や、サーバーごとに設定した重み(優先度)を加味した上で順番に振り分ける「重みつきラウンドロビン方式」などがあります。
ダイナミックな分散方式は、その時のアクセス状況や負荷などの状況を見て、最適なサーバーに振り分ける方式です。例としては、最も接続数が少ないサーバーに割り振る「リーストコネクション方式」や、最も応答が速いサーバーに割り振る「最小応答時間(最速応答時間)方式」、その他にもデータ通信量やサーバーのリソース使用率などの条件で負荷を分散させる方式もあります。

・パーシステンス(セッション維持)
パーシステンスは、同一のクライアントからのリクエストを常に同じサーバーに転送し、セッションの同一性を維持するため機能です。負荷分散によって接続先サーバーが意図せず変わってしまうことを防ぎます。ECサイトにおける注文・決済のように、決済完了まで同一セッションでの接続が必要な場合に役立つ機能です。

・ヘルスチェック
監視下のサーバーにリクエストを送信することで運用状態をチェックし、もし異常を検知した場合は振り分ける対象から除外する機能です。ロードバランサの機種によっては、PING(死活監視)・TCP(ポート接続)・アプリケーションへのリクエストなど、異なるレイヤーでのチェックが可能です。

●ユーザー側のキャッシュ保持設定
サーバー側で「.htaccess」などに設定を記述し、ユーザー側のブラウザキャッシュを有効活用する方法です。ユーザー側の読み込み処理を軽減しつつ、サーバーへのリクエストも減らせるため、サーバーの負荷軽減に役立ちます。

●CDN(Contents Delivery Network)の活用
CDNとはWeb上のコンテンツを迅速に配信するためのネットワークのことで、CDN事業者と契約することで利用できます。CDNでは、コンテンツが保存されているサーバー(オリジンサーバー)の代理として「キャッシュサーバー」を設置します。ユーザーがアクセスした際に、最も速く応答できるキャッシュサーバーからコンテンツを配信することで、オリジンサーバーの負荷を減らしつつユーザーには素早くコンテンツを提供することができます。

キャッシュサーバーへのアクセスは、DNSのCNAMEレコードで設定します。DNS内の設定ファイルへ、「あるWebサイトからコンテンツを取得する場合は、代理のキャッシュサーバーへアクセスする」といった内容のレコードを記述します。具体的には、次のようなレコードです。

www.AAAA.jp IN CNAME cache.BBBB.jp

「www.AAAA.jp」はオリジンサーバー、「cache.BBBB.jp」はキャッシュサーバーだと考えてください。この2つを「CNAMEレコード」を使って結び付け、コンテンツ取得先をAAAAからBBBBに振り向けています。

このようにCDNを活用することで、世界中に配置されたキャッシュサーバーへと負荷を分散できます。その結果、オリジンサーバーのサーバーダウンリスクを軽減することができるわけです。

●オートスケールの活用
オートスケールは、負荷に応じてクラウドサーバーのリソース(台数)を動的に変化させる機能です。サーバーの負荷やアクセス数などに応じてサーバーリソースが自動的に増減するため、突発的なアクセス集中(スパイクアクセス)でもサーバーダウンを起こしにくくなります。

オートスケールは、サーバーのスペックを上げる「スケールアップ」ではなく、サーバーの台数を増やす「スケールアウト」を自動的に行う機能のため、システムの機能ごとにサーバーが分割されており、サーバー内の処理がシンプルな場合に適しています。例えば、データベースを使用するアプリケーションの場合は、データの整合性を保つためデータベースはオートスケールの対象から外す必要があるでしょう。

また、オートスケールの利用時の注意点としては、事前にどのような条件でスケールアウトさせるか基準を設定する必要があることと、想定外のオートスケールでコストが嵩んでしまう可能性があることなどが挙げられます。とはいえ、上手く活用できれば手間もコストも抑えながらアクセス集中に備えられるため、優れたソリューションであると言えます。

サイト種別ごとのサーバー負荷軽減対策

次に、Webサイトの種別ごとにサーバー負荷軽減対策をまとめてみます。

●静的なWebサイトの場合
テキストや画像など「静的な情報」が中心のWebサイトの場合は、以下のような施策が有効です。

・コンテンツ圧縮
Webサーバー上でコンテンツを圧縮することで、アクセス集中による帯域圧迫を軽減することができます。たとえば、Apacheを利用している場合は「mod_deflate」などを設定することでコンテンツの圧縮が可能です。

コンテンツ圧縮は、サーバーダウンリスクの低下のみならず、「表示速度向上」と「離脱率低下」にも効果があります。アクセス集中から表示に遅延が生じると、ユーザーは「欲しいものがあるのにサイトが重くて使いにくい」といった感想を持ってしまいます。このことがUXの低下を招き、優良顧客の離脱や収益悪化などにつながる可能性もあります。こうしたリスクを軽減するためにも、コンテンツ圧縮は常に意識しましょう。

・フロントエンドのコーディング見直し
HTML・CSS・Java Scriptなどで構成されるフロントエンド部分のコーディングを見直してみましょう。あまりに階層が多いと、ユーザー側とサーバー側の通信頻度が高くなり、サーバーリクエストが増加して負荷が高まってしまいます。できるだけシンプルな階層で不要な通信を減らすことを心掛けてみてください。

●WordPressなどを利用した動的Webサイトの場合
CMSとして広く普及しているWordPressは、HTMLとCSSで構成された静的サイトではなく、アクセスごとにDBからコンテンツを動的に生成するため、負荷がかかりサイトば重くなりがちです。

・動的ページの静的ページ化
動的ページを静的ページ(HTMLなど)へ移行することで、DBサーバーへのアクセス頻度を減らし、サーバーダウンのリスクを軽減することができます。

●ECサイトの場合
ECサイトもWordPressと同様に動的サイトであり、かつ画像ファイルを多用する場合が多いため、次のような施策がおすすめです。

・アプリケーションサーバーによるキャッシュ保持設計
商品情報(価格や仕様)など、通常はDBサーバーに保存するデータをアプリケーションサーバーがキャッシュすることで、DBサーバーへのアクセスへのアクセス頻度を低減させることができます。Webページを動的に生成するアプリケーションサーバーを使用している場合は、DBサーバーのキャッシュを保持するように設計変更を行ってみてください。

・CDN活用
CDNは、動画や画像などを多用するECサイトではとくに有効です。

アクセス集中のダウンを防ぐ「サーバー監視」

ここまでで紹介した対策のほかにも、「サーバー監視体制の充実」によってサーバーダウンのリスクを低下させることが可能です。適切な監視と通知設定を行うことで、サーバーリソースが逼迫したり、何らかの異常が発生した場合にアラートを通知し、迅速に対応することが可能になります。また、サーバーリソースの使用状況を継続的に監視し、データとして蓄積することにより、キャパシティプランニングの精度向上にも役立ちます。

サーバーの監視については以下の記事も参考にしてみてください。
「クラウド活用を前提としたサーバ運用監視のあるべき姿とは?」
「自社に適した監視ツールはどれ? 監視ツールをOSS・有償ツールで比較」

まとめ

ここでは、アクセス集中によるサーバーダウンのリスクや、防止方法について解説してきました。近年は、SNSのトレンドや時事問題などから派生したスパイクアクセスによってサーバーダウンが引き起こされる事例が増えています。また、今後はコロナ禍による在宅時間の増加から、これまで以上にWebサイトへのアクセスが増えることも想定されます。もし、現在使用しているレンタルサーバーや共用サーバープランに不安を感じるなら、処理速度・安定性・拡張性を備えつつコストパフォーマンスも高いベアメタルクラウドを検討してみてはいかがでしょうか。