2012-04-10 12 views
2

GoogleのGAE/Jアプリケーションではsessionsを使用しています。週末には、多数の_ah_SESSIONエンティティ(毎分約100〜200分)が作成されたために発生したように見えるデータストアの書き込みに大きなスパイクがありました。私たちが知る限り、キューをパージしたときに停止したため、それらを作成する不正なタスクキューがありました。タスクは、毎時実行するプロセスmapperの一部でした。特定のリクエストに対してAppEngine(Java)セッションをオフにする

時間単位のマッパーでセッションを実行する必要はありません(実際には、私たちのタスクキューやcronジョブ、または他の多くの要求でも)。選択したURLのセッションの作成を無効にする方法はありますか?

答えて

3

残念ながらそれはできません。

ブラウザ以外のクライアント(RESTまたはmapreduceジョブ経由のデバイス)があると、すべてのリクエストでデータベース内に新しい_ah_SESSIONエンティティが生成される場合は、特に気になりません。

これを回避する唯一の方法は、独自のセッションハンドラを作成することです。クッキーを設定/チェックし、特定のパスを無視するように設定するサーブレットフィルタ。

EDIT:

私はちょうど別の方法があるかもしれないことに気づい:あなたのクライアント(MapReduceのジョブが)適切な名前を持つダミーのクッキーを設定してください。 GAEは、実稼働環境ではACSID、devサーバではdev_appserver_loginというクッキーを使用します。常に同じCookie値を使用するだけで、すべてのリクエストは1つのユーザー/セッションとして扱われます。

セッションオブジェクトの参照/保存のオーバーヘッドがまだありますが、少なくとも無数の_ah_SESSIONエンティティは作成されません。

+0

ありがとうございました。カスタムハンドラと一緒に行きます。 –

関連する問題