Home > Google App Engine(GAE) | Webサービス > 約半月で 4,000,000PV を華麗にさばく Google App Engine

約半月で 4,000,000PV を華麗にさばく Google App Engine

この記事の所要時間: 66

なんでも判定ツクール」へ多数のアクセスありがとうございますm(_ _)m

1月末にリリースした当初は僅かのアクセスだったのですが、Twitterで火が付いてからは一気にアクセスが集まり、気が付けば2月1日〜2月16日で4,000,000PVを超えました。

自分では絶対に考えつかないであろうユニークな判定がたくさんできて、私自身もとても楽しんでいます:-D(面白い発想をする人は世の中にたくさんいるものです)

このサイトはGoogle App Engine(GAE)+Pythonで構築しているのですが、このアクセス数ならではのGAE上で体験できたことをざざっと書いていきます。

無料?課金?

まずはじめに大事なこと。

「なんでも判定ツクール」ではGAEを課金状態にしています。無料のQuotaではとてもではないですが、このアクセスは捌けません:D

GAE公式サイトには

月間約 500 万ページ ビューに対応できる十分な CPU と帯域幅を、すべてのアプリケーションで完全に無料で利用できます。
Google App Engine について – Google App Engine – Google Code

といった記載があるのですが、少なくともDataStoreを使うような動的サイトでは5,000,000PV/月を無料Quotaで捌くのはかなり難しいと思います。

秒間200リクエスト

アクセスは日によって時間によってバラツキがあるのですが、瞬間最大風速では200超req/s(GAE DashboardのChart上)を記録しました。

この200req/sを記録したのは 2010/02/15 夜だったのですが、ブラウザでサイトにアクセスする分にはそれほど重さは感じませんでした。ですが、実は裏では結構なアクセスをさばいてくれています。

これはGAEの真骨頂とも言える「チャージ金額上限まで自動でリソースを割り当ててくれる」サービスのおかげですね。まさにクラウドです。チャージ上限金額までは負荷に合わせて勝手にリソースを確保していってくれるので、アクセスどんと来いという気持ちになります(比例して財布は少し寂しくなりますが><)

もちろん、これにはアプリケーションの設計も大きく関連します。いくらプラットホームであるGAEがスケールしていっても、アプリケーションがそれを想定していた作りになっていなければアプリケーション側がボトルネックとなります。「なんとか判定ツクール」は業務システムに比べると単純な作りになっているので、このあたりもGAEのスケーリングの恩恵が受けやすいということはあるでしょうね。

1日680,000PV

1日単位で見ると 2010/02/09 に 680,000PV を記録したのが最高値でした。

数値はGoogle Analyticsに記録されたものです。これはPC版の数字なので携帯版を加えるともう少し上乗せされます。

この日は秒間リクエストのピークは160くらいだったのですが、ピーク時以外もアクセスが続いたのでPVが伸びました。PVが伸びた分、課金額も一番です。

この数値を元に単純計算すると 680,000 * 30 = 20,400,000PV/月 はこなせそうです。

DataStoreの総エンティティ数が3,000,000

DataStoreのエンティティ数(RDBMSのレコード数のようなもの)の合計が3,000,000を超えました。

DataStoreにはいくつかのkind(テーブルのようなもの)があるのですが、これは全ての合計です。

中でも一番多いのが判定結果を表すエンティティで、1,500,000くらいです。つまりこれは延べ1,500,000回の判定(!)が行われたということです。(実際は、1,600,000エンティテイあるのですが、初期アプリケーションのゴミデータが含まれるので実質は1,500,000程度。)

これだけのデータがあってもキーを使った読み込みならとても高速に動作します。(これくらいのデータ量ならインデックスが効けばRDBMSでも早いですけどね。)

DataStoreエラー

負荷が上がった際、サイト自体は概ね動いているのですが、実はDataStore周りでいくつかエラーが発生しています。

例えば、平常時は瞬時に返答がある Model.get_by_key_name() でデータを取得するという単純な処理でも高負荷時は DeadlineExceededError が発生する場合があります。

これは避けがたい現象のようなので、クライアント側でリトライ処理を実装するなどして上手く付き合うしかないようです。

bit.ly

当初、判定結果をTwitterに報告する際にURLを短縮する方法としてbit.lyのAPIを利用していました。

これはとても上手く動いていたのですが、アクセス数が伸びるのに従って、bit.ly APIでエラーが発生するようになりました。一度この状態になるとエラーレスポンスが返ってくるばかりで短縮URLへの変換を行ってくれません。数十分経過すると復活するのですが、また負荷がかかると停止してしまいます。

bit.ly API のドキュメントでは1IPあたり同時アクセス数5未満とされているので、制限を超えるアクセスで止められるのは当然だと思います。なのでこれに関しては利用させて頂いてありがとうございますと、ごめんなさいという感じです。

いくらGAE自体がスケールしても、外部サービスに引っ張られて処理できないと元も子もないので、結局短縮URL機能を自作しました。

これには @kis さんとのTwitterでのやりとりが大いに参考になりました。ありがとうございました!

サイボウズさんキャンペーン

サイボウズさんのキャンペーンにて「なんでも判定ツクール」を利用して頂きました。

=>サイボウズコミュニティ – 特集 – 【終了しました】サイボウズ謹製ツバメノートプレゼント!

サイボウズさんにまつわる判定をやって、Twitterで報告するとノベルティが貰えるというキャンペーンだったのですが、多くの方が参加されて盛り上がったようです。

こういったキャンペーンに使えるという視点は当初は持っていなかったので面白かったです。

今後も絶賛募集中ですので、キャンペーンに使ってみたい、という方はご一報頂ければ嬉しいです:D

Google App Engineは使える!

「なんとか判定ツクール」を運営している感覚では、今更ながらですが、やはりGAEは十分に使えるなという印象を持ちました。

なんといってもチャージさえしておけば自動的にスケールしてくれる感覚は素晴らしいですね。これまで突発的な負荷に悩まされた経験がある方なら有難みが特に分かると思います。

もちろんGAEならではの制約(処理時間やDataStore仕様等々)があるので全てのアプリケーションをGAE上で動かすべきとは思わないですが、特性にマッチするアプリケーションであれば検討してみる価値がありますよ。

え、PHPしか書けない?PHP書けたらPython書けます。大丈夫:-D

Pocket

follow us in feedly

コメント (Close):6

萩原崇之 10-02-18 (木) 2:17

bit.ly>

 APIのレスポンスにはJSONPがあるので、ローカル上でjavaScriptだけでできてしまいます。これだとIPも分散するので制限に引っかからなかったり。

shinbara 10-02-18 (木) 17:10

萩原崇之さん:
おおーなるほど!
確かにJavaScript + JSONP使えばユーザPCからのアクセスになるので制限は問題無さそうですね。
ただ何も考えずに作るとページ表示毎にAPIを叩きに行っちゃいますね:-p

他にも応用できそうですねー。

aaaa 10-02-19 (金) 22:36

1000円でレンタルしてるcoreserverでも400万PVは普通にさばけるんですが、
わざわざ制約のあるところで作った意味あるの?

萩原崇之 10-02-26 (金) 19:26

応用>

遅くなりましたけど、こんなの作りました。

http://jitakukeibiin.com/follownow/

 JavaScriptだけで作ったtwitterのフォロワー推薦ツールです。
 原理はこちらに。

http://d.hatena.ne.jp/kagigotonet/20100225/1267072489

bit.ly>

 それが一番の難点ですよね。JSONPだとどうしてもポップアップブロッカーに引っかかってしまいますし。

 もっともTwitterからのアクセスに比べれば月400万PVすら微々たるものなわけですが(おい)。

1000円のレンタルサーバ 10-04-09 (金) 14:58

400万PVをさばいたのが凄いんじゃなくて、200req/sをさばいたのが凄いんじゃないのか?

hoge 10-04-10 (土) 13:44

結局400万pvさばくのにいくら使ったんですか?

トラックバック:3

このエントリーのトラックバックURL
/blog/2010/02/gae_twirate_sppspot_com.html/trackback
Listed below are links to weblogs that reference
約半月で 4,000,000PV を華麗にさばく Google App Engine from Shin x blog
pingback from RT @inuro: [B!] 約半月で 4,000,000PV を華麗にさばく Google App Engine | Shin x blog http://www.1×1.jp/blog/2010/02/gae_twirate_sppspot_com.html | Bally 10-02-18 (木) 15:01

[…] RT @inuro: [B!] 約半月で 4,000,000PV を華麗にさばく Google App Engine | Shin x blog http://www.1×1.jp/blog/2010/02/gae_twirate_sppspot_com.html […]

pingback from たった一晩でPlants vs Zombiesに星一つを56件つける業者はどこですか?な夕刊 10-02-18 (木) 18:43

[…] 約半月で 4,000,000PV を華麗にさばく Google App Engine | Shin x blog […]

pingback from 北海道 | onoki.jp Blog (諸々諸行無常) 10-02-21 (日) 16:17

[…] http://www.1×1.jp/blog/2010/02/gae_twirate_sppspot_com.html […]

Home > Google App Engine(GAE) | Webサービス > 約半月で 4,000,000PV を華麗にさばく Google App Engine

検索
フィード
メタ情報

Return to page top