ブログがバズった!?そんな時のために必要な対策方法

ブログをやっているとたまに爆発的にアクセス数が増えることがあります。

これを「バズる」「バズった」という言い方をします。

バズるという語は英語の動詞 buzz を日本語化した言い方である。 buzz には「噂話などでガヤガヤ騒ぐ」といった意味合いの用法がある。 英語圏でも「buzz」はいわゆる口コミマーケティングの根幹に位置する示すキーワードであり、口コミによる拡散を誘導するマーケティング手法を「バズマーケティング」と呼ぶことも多い。

この突然予想外に起きる現象にサーバーが耐えれない場合は、503エラーが頻発してページが表示されなくなります。

広告を貼っている方は、かきいれ時の時間帯にページが表示されないのは死活問題となります。

そこで今回は理論的な限界値と対策を考えてみました。

回線の帯域から考える限界値

ごく一般的なレンタルサーバーやVPSでは外向きのインターネットにつながっている回線は共用で100Mbpsが一般的です。

内部回線は1Gbpsのデータセンターも多いですが、外部用は共用100Mbpsがほとんどだと思います。

この100Mbpsの限界値を計算してみます。

100Mbpsの速度
100Mbps=12.5MB/s

100Mbpsの回線では1秒間に12.5MBのデータを転送することが可能です。

ページサイズに依存する

ここからは表示されるページサイズが問題になってきます。

ページサイズはこちらのスピードテストサイトで確認することができます。

Pingdom Website Speed Test

当サイトのトップページの場合1.9MBとなりました。

しかし実際サーバーからデータが送られる量はこれではありません。

このページサイズは広告の画像データなども含まれています。

当サイトのドメインの905.3KBが実際にサーバーから転送されたページサイズになります。

ちなみに記事ページの場合は全体で3.3MBとなりました。

実際のサーバーから配信するページサイズは1.5MBでした。

このように記事内に貼っている画像などによって大きく変わってきます。

1秒間に何PV分のデータを送ることができるか

先程100Mbpsは12.5MB/sということから1秒間に何PV分のデータを送ることができるか計算してみます。

一般的には共用回線ですが全ての帯域を使い切ったと仮定すると

ページサイズ1秒あたりのPV数
1MB12.5PV/s
2MB6.25PV/s
3MB4.17PV/s
4MB3.125PV/s
5MB2.5PV/s

この計算結果から理論最大値を求めてみると

ページサイズ30日間1日間1時間1分間
1MB3,240万PV108万PV4.5万PV750PV
2MB1,620万PV54万PV2.25万PV375PV
3MB1,080万PV36万PV1.5万PV250PV
4MB810万PV27万PV1.1万PV187PV
5MB684万PV21万PV9,000PV150PV

さすがに30日間帯域を使い切ることは考えにくいですが、1分や1時間くらいなら可能性のある数字ですよね。

実際バズった時は1分間にどのくらいのアクセスがあるのか

バズった基準は何か?

定義が無いので今回はリアルタイムアクセス数が1,000と仮定してみます。

当サイトのリアルタイムアクセスが1,000くらいの場合は1分間のアクセス数が300前後でした。

これを単純に逆算すると1秒あたり5PVということになります。

100Mbpsの回線では1秒間に12.5MB通信できるので5で割ると、さばけるページサイズは2.5MBということになります。

リアルタイムアクセス1,000に回線を耐えさせるためにはページサイズを2.5MB以下を目標に…

と言いたいところですが実はWordPressの場合は、帯域の問題より先にphpで動く関係からCPUとメモリの壁にぶち当たります。

php処理能力の限界値

WordPressは静的なHTMLではなく動的なPHPで動いています。

HTMLとPHPの違い
  • HTMLはすでに料理が用意されていてそれを提供するだけ。
  • PHPはオーダーが入ってから調理して提供するので時間がかかります。

このオーダーが入ってから料理を提供できるまでの時間が、読者が待てる・待てないの時間に関係してきます。

すぐに料理が出てくれば快適ですが、なかなか出てこないとページが表示されないのと同じで、キャンセルつまり他のサイトに行ってしまいます。

WordPressを静的なサイトに見せかけるにはキャッシュ系のプラグインを利用します。

キャッシュ系のプラグインの種類
  • 予めトップページなど記事のキャッシュを作っておいてリクエストが来たら提供する
  • 初めてアクセスが有ったページからキャッシュを作って短時間に同じページにアクセスが有った場合はキャッシュを提供する

このキャッシュ系のプラグインはなかなか扱いが難しくレイアウトが崩れたり、更新した内容が反映されなかったりとトラブルも伴います。

個人的な感覚では、おそらく20万PV以下のサイトの場合はキャッシュ系のプラグインを入れる意味はほぼ無いと思います。

キャッシュ系のプラグインはあまり意味がない?

バズったときにはキャッシュ系のプラグインがあったほうが、phpのリクエスト数を減らすことができるので有効ですが問題はバズった時の読者の端末です。

上記の例ではパソコンが半分以上、スマホが4割という割合です。

これがテレビで紹介された内容になると

あ、ちょっとスマホで調べてみよう

という流れになって

スマホからのアクセスが殆どになって割合がこのように変化します。

これの問題点はWordPressのテーマがレシポンシブデザインの場合、ほとんどのプラグインでスマホからのアクセス時はキャッシュが効かないという点です。

レシポンシブデザインのテーマでキャッシュを有効にするとスマホでアクセスしたのにPCのレイアウトで表示されたりと不具合が発生することがあるためです。

つまり、スマホからのアクセスが多い場合のバズではキャッシュ系のプラグインでphpリクエスト回数を減らせる効果は少ないと思っておいたほうが良いでしょう。

WordPressでバズった時にエラーを出さない対策

記事がバズってフィーバー状態の時にエラーにならない対策法をいくつか考えてみました。

ページサイズを減らす

先程の帯域の話と直結しますが、ページサイズ特に画像は軽いほうがサーバーにも読者にも良いです。

なるべく画像を圧縮しましょう。

画像の圧縮についてはこちらに詳しく書いています。

スペックが高いサーバーやプランに変更する

サーバーの処理能力が不足していると時間帯によってはページが表示されるまでが遅かったり、エラーが出たりもするのでそれなりのサーバーで運用しましょう。

レンタルサーバーだけでなくVPSを借りて同時接続に強いKUSANAGIなどでWordPressを動かすのも良い方法だと思います。

処理が重たいプラグインを外す

WordPressはプラグインを入れれば入れるだけ関数が増えてphpのリクエストが爆発的に増えていきます。

特に不要なプラグインは停止または削除しましょう。

特に記事をランキング表示できる WordPress Popular Posts などは重くて有名です。

CDNを利用する

CDNとは元となるサーバーのデータを世界あちこちに設置したCDNサーバーに同じデータをキャッシュしておき、リクエストが来た一番近いCDNサーバーから提供するというシステムです。

CDNとは、コンテンツデリバリネットワーク(Content Delivery Network)の略で、世界中に張り巡らされたCDN専用の配信ネットワーク(CDNプラットフォーム)を利用して、Webサイトにアクセスしようとするエンドユーザに最も近いPoP(配信拠点)から効率的かつ高速にWebを配信する仕組みです。
CDN(コンテンツ・デリバリ・ネットワーク)とは/What is CDN

わかりやすく説明すると、あちこちに同じメニューを提供できる店舗を設置してオーダーが入った一番近い店から出前するようなイメージです。

CDNのサービスはいろいろな会社が提供していますが、無料で利用できるCloudFlareが有名です。

CDNの欠点はページやデザインを更新した場合は、CDNサーバーのキャッシュを削除する必要があります。

CDNのサービスがダウンした場合も、サイトが表示されないなどの問題もあります。

またネームサーバーの設定をCDNのネームサーバーに変更する必要があったりアクセス解析が曖昧になるなどの欠点もあります。

AMPを有効にする

スマホからのアクセスが多い場合はAMPも有効な手段になります。

Accelerated Mobile Pages (AMP) は、Googleが中心となって立ち上げた、モバイルでのウェブサイト閲覧を高速化することを目的とするオープンソースプロジェクトである[1]。また、AMPの成果物である一連の仕様やライブラリなどについてもAMPと呼ぶ。AMPは、従来より用いられているHTMLなどのウェブ技術を改良したもので、中核となるのはAMP HTMLと呼ばれるHTMLの一種である。
Accelerated Mobile Pages – ウィキペディア

実際私もバズったときはAMPを有効にしていたので、実際はグーグルのキャッシュが表示されてサーバー側の負荷は少なかったと思います。

AMPのデメリットはデザイン・レイアウトが簡素化される点です。

最大のデメリットは、広告も一部しか表示されなくなります。サーバーが503エラーで見れなくなるかAMPで正常に表示されるけど広告が一部しか表示されなくなるかはトレード・オフの関係ですね(笑)

コメントを残す