0

x-appengine-estimated-cpm-us-dollarsヘッダーを調べて、GAE へのリクエストのコストを測定しています。これはうまく機能し、x-appengine-resource-usageおよび x-traceurlと組み合わせることで、より詳細な情報を取得することさえできます。

ただし、アプリケーションの大部分はタスク キューのコンテキストで実行されます。したがって、インスタンス時間のコストの大部分はキューによって消費されます。コードがリクエストの外で実行されるたびに、そのコストはx-appengine-estimated-cpm-us-dollarsヘッダーに含まれません。

各リクエストで消費される全コストを測定する方法を探しています。つまり、リクエスト自体によって生成されたコスト、このリクエストによって追加されたタスクのコストです。

4

1 に答える 1

1

やり過ぎです。グーグルアプリエンジンログをダウンロードしてsqliteに変換できるツールがあります。 http://code.google.com/p/google-app-engine-samples/source/browse/trunk/logparser/logparser.py

このツールを使用すると、タスク要求と通常の要求の両方のcpmusdがすべて一緒にダウンロードされます。毎日のログを別のsqliteファイルに保存し、必要なだけ分析を行うことができます。

タスクのコストを元の要求に関連付けるという点で。このツールでダウンロードされたログデータには、loggingモジュールの完全な出力が含まれています。

  1. したがって、元のリクエストに生成IDを記録するだけで済みます。
  2. IDをタスクに渡します。
  3. 受信したIDをタスクリクエストに再度記録します。
  4. idを介して通常とタスクリクエストのペアを検索します。

例えば:

# in org request
a_id = genereate_a_random_id() 
logging.info(a_id) # the id will be included 

taskqueue.add(url='/path_to_task', params={'id': a_id})


# in task request
a_id = self.request.get('id')
logging.info(a_id)

編集1

通常のリクエスト+タスクリクエストのコストを見積もる別の方法があると思います。秘訣は、非同期タスクを同期するように変更することです(コストが同じであると想定します)。私はそれを試しませんでしたが、試す方がはるかに簡単です。

# in org request, add a variable to identify debug
debug = self.request.get('DEBUG')

if debug:
    self.redirect('/path_to_task')
else:
    taskqueue.add(url='/path_to_task')

したがって、DEBUGパラメータを使用して通常のリクエストをテストしている間。最初に通常のリクエストを処理し、次に通常のリクエストに対してx-appengine-estimated-cpm-us-dollarsを返します。後で、テストクライアントを相対タスクリクエストにリダイレクトし(タスクリクエストは、通常のリクエストとしてURLクライアントを介してアクセスおよびトリガーすることもできます)、タスクリクエストに対してx-appengine-estimated-cpm-us-dollarsを返します。それらを単純に足し合わせて、総コストを得ることができます。

于 2012-12-11T17:14:54.740 に答える