ひつじのにっき

mhidakaのにっきです。たまに長文、気が向いたとき更新。

【NT-6】Task QueueはMapReduceの夢を見るか?

佐藤 一憲 (有限会社スティルハウス)
資料:http://d.hatena.ne.jp/kazunori_279/20100311/1268289870

GAEのAppEngineの処理時間は30秒で制限されている
何100万もの規模のものに関して、並列処理するためにTaskQueueを使う。
個々のタスクにも30秒制限は課されているので注意。

20Task/s アプリ単位。Tasks/Day:100K(Free)で順次検索デモ

10万件のデータを1万件/1つのタスク ずつ取り出して10個のタスクで実施
XMPPでの実装、GtolkのデータからABCDを実行(103秒)

並列化してみる

10万件のデータを1000件ずつ、100個に分けて同時に検索する
XMPPでの実装(40秒)

AppEngineで並列処理するには

AppServerが並列であることを生かす
タスクキューを使ってリクエストを分割

AppServerが1台のときは

サービスのほうで並列化する。一度に投げるクエリを分割する

並列化のためのウォーミングアップに数分かかる

インスタンスの起動にスピンナップという処理がある
そのときにリクエストが届くとエラーになる。同時リクエスト数は30だけど、個別に制限を解除することは可能。
AppServerのインスタンス作成は10秒程度かかることも。