mixiアプリ「the Actress」運用にあたっての課題へのチャレンジ                 appengine ja night #13
自己紹介名前: 岡野真也twitter: @tokibitoblog: http://d.hatena.ne.jp/nullpobug/所属: 株式会社ビープラウド
弊社について株式会社ビープラウドhttp://www.beproud.jp/主にWebサイトなどの受託開発(PC/モバイル)プログラミング言語はPython(Django)iPhone, AndroidアプリもやってますGAEのAPI Expe...
「the Actress」  http://www.lux.co.jp/campaign/actress/  mixiアプリ(PC+モバイル)     PC側 - FlashからのAPIアクセス     モバイル版 - 動的にhtml生成  A...
リクエスト数
Kay frameworkについて AppEngine用アプリケーションフレームワーク url: http://code.google.com/p/kay-framework/ 作者: @tmatsuo ライセンス: New BSD License
Kay frameworkについて(2) アーキテクチャ  Django風MVC(Model-Template-View)  Jinja2テンプレートエンジン  Werkzeug  国際化(babel)  遅延ロード
課題短時間でDeadlineExceededErrorが連続して発生する短時間でImportErrorが連続して発生する有効なはずのURLへアクセスすると404 NotFoundメモリ使用量の制限でインスタンスが落とされる
DeadlineExceededError タイムアウトで発生する例外   どの行でも発生する可能性     例外が発生しないのが前提なコードはダメ SDKでは2箇所で定義されている   google.appengine.runtime.api...
例.
DeadlineExceededError(対策) ロードや処理時間を短く 例外が発生する可能性を常に考慮 例外が発生しても破綻しない構造
ImportErrorの連続発生 モジュールは存在するはず ロードに時間がかかるモジュール  Jinja2     初回ロード時にほとんどのモジュールをロー     ドする ロード中にDeadlineExceededErrorが発生して中 途半...
ImportErrorの連続発生(2) try exceptで例外を握りつぶさないように http://code.google. com/p/googleappengine/issues/detail?id=1409
例.
ImportErrorの連続発生(対策) スピンアップ時のインポートを減らす   遅延ロード warmupを使う
404 NotFound   スピンアップ時のURL構築~キャッシュ部分で  DeadlineExceededErrorが発生  中途半端な状態でキャッシュされていた  kayの問題
メモリ使用量制限 GAE/Pyのインスタンス(PythonVM)でメモリを使用 しすぎると強制終了 メモリ使用量がおよそ150~250MB程度で発生? 集計に注意   大きすぎるリスト   大きすぎる辞書
メモリ使用量制限(2) 変数を使ってキャッシュする際に注意  メモリリークの可能性 アプリケーションの規模が大きい場合  コード量、モジュール数が多い    各ロジックで使えるメモリが少ない
Exceeded soft memory limit ...
メモリ使用量制限(対策) 1リクエストの処理を減らす   タスクキューで分割 モジュールは遅延ロードする   使用頻度の低いものは極力ロードしない 変数によるキャッシュを減らす   Memcacheやデータストアを使う
キャッシュ不具合のデモ(時間があれば。)
まとめ 例外を潰さないように! 例外が発生しても破綻しないように! 1リクエストの処理は小さく! AppEngineはスケールするよ!
ありがとうございました。
Upcoming SlideShare
Loading in...5
×

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

1,749

Published on

0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,749
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

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

  1. 1. mixiアプリ「the Actress」運用にあたっての課題へのチャレンジ appengine ja night #13
  2. 2. 自己紹介名前: 岡野真也twitter: @tokibitoblog: http://d.hatena.ne.jp/nullpobug/所属: 株式会社ビープラウド
  3. 3. 弊社について株式会社ビープラウドhttp://www.beproud.jp/主にWebサイトなどの受託開発(PC/モバイル)プログラミング言語はPython(Django)iPhone, AndroidアプリもやってますGAEのAPI Expertがいます(@IanMLewis) 
  4. 4. 「the Actress」 http://www.lux.co.jp/campaign/actress/ mixiアプリ(PC+モバイル) PC側 - FlashからのAPIアクセス モバイル版 - 動的にhtml生成 AppEngine/Python Kay framework(ver 0.8.0) アプリケーション数 - 80個ぐらい 同時リクエスト数 - 100~200前後(2010/11) インスタンス数 - 100~250前後(2010/11)
  5. 5. リクエスト数
  6. 6. Kay frameworkについて AppEngine用アプリケーションフレームワーク url: http://code.google.com/p/kay-framework/ 作者: @tmatsuo ライセンス: New BSD License
  7. 7. Kay frameworkについて(2) アーキテクチャ Django風MVC(Model-Template-View) Jinja2テンプレートエンジン Werkzeug 国際化(babel) 遅延ロード
  8. 8. 課題短時間でDeadlineExceededErrorが連続して発生する短時間でImportErrorが連続して発生する有効なはずのURLへアクセスすると404 NotFoundメモリ使用量の制限でインスタンスが落とされる
  9. 9. DeadlineExceededError タイムアウトで発生する例外 どの行でも発生する可能性 例外が発生しないのが前提なコードはダメ SDKでは2箇所で定義されている google.appengine.runtime.apiproxy_errors google.appengine.runtime
  10. 10. 例.
  11. 11. DeadlineExceededError(対策) ロードや処理時間を短く 例外が発生する可能性を常に考慮 例外が発生しても破綻しない構造
  12. 12. ImportErrorの連続発生 モジュールは存在するはず ロードに時間がかかるモジュール Jinja2 初回ロード時にほとんどのモジュールをロー ドする ロード中にDeadlineExceededErrorが発生して中 途半端な状態になることがある
  13. 13. ImportErrorの連続発生(2) try exceptで例外を握りつぶさないように http://code.google. com/p/googleappengine/issues/detail?id=1409
  14. 14. 例.
  15. 15. ImportErrorの連続発生(対策) スピンアップ時のインポートを減らす 遅延ロード warmupを使う
  16. 16. 404 NotFound スピンアップ時のURL構築~キャッシュ部分で DeadlineExceededErrorが発生 中途半端な状態でキャッシュされていた kayの問題
  17. 17. メモリ使用量制限 GAE/Pyのインスタンス(PythonVM)でメモリを使用 しすぎると強制終了 メモリ使用量がおよそ150~250MB程度で発生? 集計に注意 大きすぎるリスト 大きすぎる辞書
  18. 18. メモリ使用量制限(2) 変数を使ってキャッシュする際に注意 メモリリークの可能性 アプリケーションの規模が大きい場合 コード量、モジュール数が多い 各ロジックで使えるメモリが少ない
  19. 19. Exceeded soft memory limit ...
  20. 20. メモリ使用量制限(対策) 1リクエストの処理を減らす タスクキューで分割 モジュールは遅延ロードする 使用頻度の低いものは極力ロードしない 変数によるキャッシュを減らす Memcacheやデータストアを使う
  21. 21. キャッシュ不具合のデモ(時間があれば。)
  22. 22. まとめ 例外を潰さないように! 例外が発生しても破綻しないように! 1リクエストの処理は小さく! AppEngineはスケールするよ!
  23. 23. ありがとうございました。
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×