23
mixiアプリ「the Actress」運用に あたっての課題へのチャレンジ appengine ja night #13

mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

Embed Size (px)

Citation preview

Page 1: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

mixiアプリ「the Actress」運用にあたっての課題へのチャレンジ

appengine ja night #13

Page 2: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

自己紹介

名前: 岡野真也twitter: @tokibitoblog: http://d.hatena.ne.jp/nullpobug/所属: 株式会社ビープラウド

Page 3: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

弊社について

株式会社ビープラウドhttp://www.beproud.jp/主にWebサイトなどの受託開発(PC/モバイル)プログラミング言語はPython(Django)iPhone, AndroidアプリもやってますGAEのAPI Expertがいます(@IanMLewis) 

Page 4: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

「the Actress」

http://www.lux.co.jp/campaign/actress/mixiアプリ(PC+モバイル)

PC側 - FlashからのAPIアクセスモバイル版 - 動的にhtml生成

AppEngine/PythonKay framework(ver 0.8.0)

アプリケーション数 - 80個ぐらい同時リクエスト数 - 100~200前後(2010/11)

インスタンス数 - 100~250前後(2010/11)

Page 5: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

リクエスト数

Page 6: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

Kay frameworkについて

AppEngine用アプリケーションフレームワークurl: http://code.google.com/p/kay-framework/作者: @tmatsuoライセンス: New BSD License

Page 7: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

Kay frameworkについて(2)

アーキテクチャDjango風MVC(Model-Template-View)Jinja2テンプレートエンジンWerkzeug国際化(babel)遅延ロード

Page 8: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

課題

短時間でDeadlineExceededErrorが連続して発生する短時間でImportErrorが連続して発生する有効なはずのURLへアクセスすると404 NotFoundメモリ使用量の制限でインスタンスが落とされる

Page 9: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

DeadlineExceededError

タイムアウトで発生する例外どの行でも発生する可能性

例外が発生しないのが前提なコードはダメSDKでは2箇所で定義されている

google.appengine.runtime.apiproxy_errorsgoogle.appengine.runtime

Page 10: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

例.

Page 11: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

DeadlineExceededError(対策)

ロードや処理時間を短く例外が発生する可能性を常に考慮例外が発生しても破綻しない構造

Page 12: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

ImportErrorの連続発生

モジュールは存在するはずロードに時間がかかるモジュール

Jinja2初回ロード時にほとんどのモジュールをロードする

ロード中にDeadlineExceededErrorが発生して中途半端な状態になることがある

Page 13: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

ImportErrorの連続発生(2)

try exceptで例外を握りつぶさないようにhttp://code.google.com/p/googleappengine/issues/detail?id=1409

Page 14: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

例.

Page 15: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

ImportErrorの連続発生(対策)

スピンアップ時のインポートを減らす遅延ロード

warmupを使う

Page 16: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

404 NotFound

�スピンアップ時のURL構築~キャッシュ部分でDeadlineExceededErrorが発生中途半端な状態でキャッシュされていたkayの問題

Page 17: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

メモリ使用量制限

GAE/Pyのインスタンス(PythonVM)でメモリを使用しすぎると強制終了メモリ使用量がおよそ150~250MB程度で発生?集計に注意

大きすぎるリスト大きすぎる辞書

Page 18: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

メモリ使用量制限(2)

変数を使ってキャッシュする際に注意メモリリークの可能性

アプリケーションの規模が大きい場合コード量、モジュール数が多い

各ロジックで使えるメモリが少ない

Page 19: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

Exceeded soft memory limit ...

Page 20: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

メモリ使用量制限(対策)

1リクエストの処理を減らすタスクキューで分割

モジュールは遅延ロードする使用頻度の低いものは極力ロードしない

変数によるキャッシュを減らすMemcacheやデータストアを使う

Page 21: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

キャッシュ不具合のデモ

(時間があれば。)

Page 22: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

まとめ

例外を潰さないように!例外が発生しても破綻しないように!1リクエストの処理は小さく!AppEngineはスケールするよ!

Page 23: mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ

ありがとうございました。