ヒット

コンテンツがヒットしてるっぽい

自部署の話ではないので少し残念ではあるのですが

携帯コンテンツを5/7にリリースしたところ

初日6,000PV
2日目9,000PV
3日目20,000PV
4日目32,000PV
5日目196,000PV
ときて、24日(18日目)に100万PV達成
これは合算ではなく日別のアクセス。

単純にこのまま100万を1ヶ月続けるだけで月間3000万PVだなぁ・・・

ゲーム+SNSなサイトだし、ある程度落ち着くと思うけど。

さて、Web屋らしくアクセスとの奮闘でも。

元々別のコンテンツとの共存でサービス開始。

Webサーバ1台でコンテンツ3〜4個乗ってる状態。
DBサーバ1台で上記コンテンツのDB+別のWebサーバのコンテンツ3個
別のWebサーバには月間3,000万以上を売り上げるコマースサイトが乗ってる。

んが、しかし。

Webサーバが限界を超える。それが先週ぐらいの話し。
この段階でロードアベレージが10ぐらい(ピーク時/5分以上)
社内にあったコマースASP用のWEBサーバを急遽そのコンテンツのサーバにする。
ストックがあってよかったと思ったよ。マジデ。

3台あったのでDB1台+Web2台の新規サーバに・・・ と思ったが
DBサーバにしようと思ってたサーバの1台が電源が入らない。

とりあえずWebサーバだけでもとWeb2台をバランシング構成にてDCに設置。
この日ロードアベレージが40を超える。(4コアのWebサーバ)

バックアップが午前4時に行われるので4時にサイト停止。
.htaccessで全アクセスに対して403でメンテナンスページへ。

DNSを変更して新規サーバのバランシングIPに振り分け。
ttlはそもそも1時間なのでそんなにかからないはず。

データをrsyncで転送。

自分で作ったフレームワークはどの構成のサーバでもある程度汎用的に動くので問題なし。

問題点は各サーバで生成された画像。(アバター)

NFSでマウントして、マウントした場所にシンボリックリンクを張り、どちらのサーバで生成されても問題ないように設定。

社内からのアクセスのみ許可してテスト。

問題なく動作しているので、旧サーバのアクセスログ

tail -f /var/log/httpd/hoghoge

にて確認し、ほぼアクセスのなくなったのを確認してから.htaccessを解除。(クローラーttl無視して1時間以上たっても旧サーバ参照するのな)

で、翌日に修理の人が来てDBサーバ設定完了。

ついでに2Uのサーバ発注。

DBはまだ余裕ありそうだから2U来てからでもいいかなーとか言ってたその晩

DBサーバのロードアベレージが6〜8まで跳ね上がる。(これも4コア)

Webに余裕ができてDBへのアクセスが集中したっぽい

翌日にDCにDBサーバ設置。

んで、午前4時を待ってDBも移行。

上記方法と同じようにしてサイト停止。

mysqldumpでDBのフルバックアップを取得。

rsyncで新サーバにデータ移して流し込み。

フレームワークの設定変えて新サーバを参照するように変更。

もんだいなさげなんでそのままオープン。

で、その日の昼過ぎにサーバ停止。

アプリの作りとDBの構成に問題がありデッドロックが発生していた模様。

とりあえず該当テーブルをMyISAMからInnoDBに変更して対応。

すると負荷が半減。

これ・・・もしかして旧DBサーバでもいけてたんじゃね・・・?適な負荷まで下がる。

でも、まだアクセス増え続けてるから変えといて良かったかもね。

PV以外(ゲームの通信部分)も含めると200万PV/日以上なのでそのうち2Uが届けばまたそれに変える。

それでもまだ負荷が上がりそうならマスター/スレーブ構成にてレプリケーションを行う。

幸いWebアプリはマスター/スレーブ構成を意識した作りとなっているので設定変更と軽いテストで可能。

いやはや、これが2週間以内に起こったことです。

自部署の仕事がすすまねぇ!

ついでにルータのCPU使用率もピークで100%なので変更しなければ死ぬ。