2012-03-27 10 views
1

Google App Engineプラットフォームでホストされているアプリケーションがあります。アプリケーションは主に入出力集中型で、HTTPクライアントによるアプリケーションエンジンサーバーへの多数のアップロードおよびダウンロード操作が必要です。Google App Engine - HTTPクライアントからサーバーへのアップロード/ダウンロード時間はインスタンス時間に含まれますか?

私の質問は次のとおりです。この場合、インスタンス時間は何を構成していますか?リクエストデータをアップロードするためにHTTPクライアントが費やす合計時間が含まれていますか?または、要求データ全体がアップロードされ、要求の処理が開始されると、インスタンス時間の計算が開始されますか?アプリケーションから

例の結果:

  • HTTPクライアントは、App Engineのサーバーへアップロード要求を送信し、要求データクライアント側で完了するために、要求にかかったサイズ1.1メガバイト

    時間 - 78311ミリ秒

    対応するサーバのログエントリ:

- - [時間] "POST/HTTP/1.1" 200 127 - "はApache-HttpClientを/ UNAVAILABLE(ジャワ1.4)" "" MS = 3952 cpu_ms = 1529 api_cpu_ms = 283 cpm_usd = 0.154248インスタンス=

  • HTTPクライアントからダウンロード要求がアプリエンジンサーバーに送信されました。

- - [時間] "POST/HTTP/1.1" 200 297910 - 「アパッチ:8632ミリ秒

対応するサーバのログエントリを - 要求のために取ら

時間は、クライアント側で完了します-HttpClient/UNAVAILABLE(ジャワ1.4)」 "" MS = 909 cpu_ms = 612 api_cpu_ms = 43 cpm_usd = 0.050377インスタンス=インスタンス時間の利用に寄与するこれらの図の

- であり、それはa)のMS、B)cpu_ms又はc)要求がクライアント側で完了するのにかかる時間?

HTTPクライアントはデータのアップロード中にFileEntityを使用するため、データはクライアントからサーバーに1つの部分で送信されると仮定します。

答えて

2

着信リクエストはApp Engineインフラストラクチャによってバッファされ、リクエスト全体が受信されると、リクエストはアプリのインスタンスに渡されます。同様に、送信リクエストはバッファされ、ユーザーがレスポンスのダウンロードを完了するのをアプリが待つ必要はありません。その結果、アップロードとダウンロードの時間はあなたのアプリに対して請求されません。

2

ログの数字を理解するには、log breakdownをご覧ください。もう少し読みやすいhereです。

あなたが提示したオプション(a。b。c。)は、直接請求されません。従来、GAEはCPU時間をコストの単位としてカウントしていましたが、2011年11月に変更されました。インスタンスが要求を処理していなくても、インスタンスの稼働時間を支払うようになりました。インスタンスの請求が中止されるafter 15 min of inactivity

は(これは、彼らが彼らのために課金を停止した後、GAEは、実際にインスタンスをシャットダウンすることを意味するものではありません - 。ダッシュボードで「インスタンス」のグラフを参照してください)

アップされているどのように多くの場合、アプリケーションのperformance settingsに依存します。

あなたのアプリはIO集中型なので、同時リクエスト(Java,)を有効にするのに役立ちます。この方法では、主にIOを待っている複数の並列リクエストを実行できます。私たちのアプリでは、1つのインスタンスで約15-20件のリクエストが並行して処理されています。

更新:

This is the actual time (hence 'wallclock' time) taken to return a response to 
the user, not including the time it took for the user to send their request or 
the time it takes to send the response back - that is, just the time spent 
processing by your app. 

注ニック・ジョンソンは、GAEチームのエンジニアですので、これは正式な答えとして撮影することができていること:

これはfirst linkms=xyzログエントリ言うことです。

+0

配信されるコンテンツが、プロキシのキャッシュを経由している場合は、クライアントの要求期間とサーバーの要求期間が異なる可能性があります。実際には、App Engineの前にキャッシングプロキシがあり、キャッシュヘッダー(Cache Control)を設定するとコンテンツをキャッシュします:http://www.kyle-jensen.com/proxy-caching-on-google- appengine –

+0

キャッシュされたリクエストを表示するには、GAEダッシュボードの「タイプ別のリクエスト」グラフ –

+0

を参照してください。質問は、クライアントがApp Engineサーバーにデータをアップロード/ダウンロードするのにかかる時間を含めることに関連しています。この時間はインスタンス時間の計算に含まれていますか?要求にインスタンスが添付されている場合 - 要求データ全体がサーバーにアップロードされた後、またはサーバー側で要求ヘッダーが受信されるとすぐに生成されますか? –

関連する問題