昨日のサーバーが落ちた現象について

2015年5月20日 0 投稿者: khws4v1

昨日このブログをホストしているサーバーが落ちました。
あまりにも突然のことでビビりました。
ちなみに、このサーバーがアクセス殺到で落ちるというのは初めての現象です。

経緯

午後7時頃

株式会社ウサギィの「画像解析できるマン」で食べられる鉄道車両を探してみたをブログに投稿する。

この時、Twitterの@usagee_jpによって記事が共有され、ブログのPVが急増する。
しかし、ここではまだ落ちていない。

午後7時30分頃

また別の人が記事を共有する。

すると、さらに記事のPVが伸び、ツイートはRTされまくり、あまりの拡散っぷりから

  • もしかしたらさっき投稿した記事に不適切な表現があったのではないか
  • ぱっと見では分からないけど実は非難が殺到しているのではないか
  • これはもしかしたら炎上なのではないか

という心配をしてしまう。 サーバーの負荷なんて気にもせず、「もし炎上だったらサーバーを停止させてアカウントも消してとんずらしてさっさと逃げよう」というどうでもいいことを気にしてしまう。 しかし、サーバーに対するアクセスの伸びは想定外のもので・・・

サーバーが落ちる。

わずか1分の出来事であった。

午後7時40分頃

サーバーが落ちたのに気がつく。

SSHで接続できないのでリセットボタンで再起動する。

サーバーの負荷

とりあえずMRTG貼っときますね。

cpu-day

CPUの使用率

mem-day

メモリの空き容量

load-day

Load Average

19時のあたりを見れば分かるのですが、明らかにサーバーの負荷が急増しています。

ブログのPV

WordPressの統計情報を貼っときます。

Screen Shot 2015-05-20 at 10.53.55

今日のPVでも十分今までのPVと比べれば高過ぎるのですが、問題の昨日のPVはというと・・・

Screen Shot 2015-05-20 at 10.54.44

他の記事はPVが10にも満たないのにあの記事はなんと1024!(2^10)
また、いつもは多くても1日あたり30PVにも満たないのでPVがわずか1日にして30倍以上にもなりました。
インフレってレベルじゃねーぞ!

サーバーが落ちた原因

アクセスが多すぎる

今までいくつかのブログを立てたことはありますが、ここまでアクセスが殺到するのは初めてです。

いままでどんなに煽り要素をふんだんに使用し、ありとあらゆる人を怒らせて「ぶっ殺してやる!!!」と思わせるような記事を投稿して、Twitterやはてブで総攻撃を受けるようなことがあってもここまでアクセスが伸びたことは一度もありません。

つまり、

ブログ記事が炎上する影響 <<<<<<<<<<|サーバー陥落の壁|<<<<<<<<<<< かずー氏が記事を共有する影響

という式が成り立ちます。

正直インターネットの世界を舐めてました・・・

サーバーの処理能力が弱すぎる

実はこのサーバーは費用を抑えるために、CPUはCeleron J1900を採用しました。
Celeron J1900のメリットは費用が安い(マザーボードとセットで1万くらい)、消費電力が低くて電気代が安い(数Wくらい、しかもファンレス)といったメリットがあり、普段はあまりにも過疎すぎるブログくらいなら十分やっていけるレベルでした。

ただ、お世辞にも処理能力が高いとは言えず、現状の過疎状態でもレスポンスが若干遅いです。
このままだとアクセスが増えてきたら対処できなくなりますが、

  • 突然アクセスが増えることはありえない
  • 仮にアクセスが増えてきてもサーバーのハードウェアを強化する時間は十分あるから問題ない
  • 処理能力が低くても直ちに影響はない

と判断しました。実際は

  • 突然アクセスの量がインフレした
  • ハードウェアを強化する時間と金なんかあるわけねえだろ
  • 処理能力が低すぎて直ちに影響がある

という結果になりました。

画像のサイズと量が多すぎる

当ブログは鉄道写真を載せた記事がメインコンテンツとなっており、昨日の記事も画像がメインコンテンツでした。

画像を上げるときはデジタルカメラで撮った画像を容赦なくそのまま掲載していました。
こうすることでより高解像度な鉄道写真をお楽しみ頂けるようになっております。
(決してリサイズが面倒くさいわけではない)

そうなると転送量が増えて負荷が増えるということになりました。

対策

CDNの利用

このブログは画像が多いので画像をCDNから配信することにしました。

WordPressはPhotonで簡単にできるからちょろい。

WP Super Cacheの導入

ページをキャッシュすることでいちいちPHPでページを生成させるのを抑制させました。

ハードウェアの強化は・・・

どうせPV増加も一時的なもので、また過疎ブログに戻るのは目に見えているのでハードウェアの強化はしません。

というかそんな金ないよ。

最後に

ごはん

範囲を選択_043

末 期 色 電 車 は ご は ん