I have an application hosted on the Google App Engine platform. The application is mostly I/O intensive and involves a high number of upload and download operations to the app engine server by an HTTP client.
My question is: what does the instance hour comprise of in this case ? Does it include the total time taken by the HTTP client to upload the request data ? Or does the instance hour calculation begin when the entire request data is uploaded and processing of the request starts ?
Example results from the application:
-
An HTTP client sent an upload request to the app engine server, request data size 1.1 MB
Time taken for request to complete on the client side – 78311 ms
Corresponding server log entry:
– – [Time] “POST / HTTP/1.1” 200 127 – “Apache-HttpClient/UNAVAILABLE (java 1.4)” “” ms=3952 cpu_ms=1529 api_cpu_ms=283 cpm_usd=0.154248 instance=
-
An HTTP client sent a download request to the app engine server.
Time taken for request to complete on the client side – 8632 ms
Corresponding server log entry:
– – [Time] “POST / HTTP/1.1” 200 297910 – “Apache-HttpClient/UNAVAILABLE (java 1.4)” “” ms=909 cpu_ms=612 api_cpu_ms=43 cpm_usd=0.050377 instance=
Which of these figures contributes towards the instance hour utilization – is it a) ms, b) cpu_ms or c) the time taken for request to complete on the client side ?
Please note that the HTTP client uses a FileEntity while uploading data, therefore I assume that data is sent over by the client to the server in a single part.
Incoming requests are buffered by the App Engine infrastructure, and the request is only passed to an instance of your app once the entire request has been received. Likewise, outgoing requests are buffered, and your app does not have to wait for the user to finish downloading the response. As a result, upload and download time are not charged against your app.