Google Code offered in: 中文 - English - Português - Pусский - Español - 日本語
An App Engine application can consume resources up to certain maximums, or quotas. With quotas, App Engine ensures that your application won't exceed your budget, and that other applications running on App Engine won't impact the performance of your app.
Each App Engine resource is measured against one of two kinds of quota: an adjustable quota or a fixed quota.
Adjustable quotas are resource maximums set by you, the application's owner, to prevent the cost of the application from exceeding your budget. These resources represent the way apps tend to grow as more people use it, such as the amount of data kept in the datastore, or the amount of incoming and outgoing network bandwidth used. Every application gets an amount of each adjustable quota for free.
During App Engine's preview period, adjustable quotas are set at the free levels for all apps. A future release will allow you to associate a billing account with an app, and change the adjustable quotas beyond these levels. You will only pay for what your app actually consumes, but never more than what you specify for the adjustable quotas.
Fixed quotas are resource maximums set by App Engine to ensure the integrity of the system. These resources describe the boundaries of the architecture, and all applications are expected to run within the same limits. They ensure that another app that is consuming too many resources will not affect the performance of your app.
App Engine records how much of each resource an application uses in a calendar day, and considers the resource depleted when this amount reaches the app's quota for the resource. A calendar day is a period of 24 hours beginning at midnight, Pacific Time. App Engine resets all resource measurements at the beginning of each day, except for Stored Data which always represents the amount of datastore storage in use.
Historical note: The 24-hour replenishment cycle was introduced in December 2008. It replaced a more complicated system of "continuous" replenishment, to make it easier to report and control resource usage.
In addition to the 24-hour quotas, App Engine moderates how quickly an app can consume a resource, using burst limits. This protects the app from consuming all of its quota in very short periods of time, such as due to sudden popularity or an inefficiency in the code. Burst limits allow an app to consume quota at a sharply increased rate for a short period of time.
We will publish more information about burst limits when we release the billing feature in 2009.
When an app consumes all of an allocated resource, the resource becomes unavailable until the quota is replenished.
For resources that are required to initiate a request, when the resource is depleted, App Engine returns an HTTP 403 Forbidden status code for the request instead of calling a request handler. The following resources have this behavior:
For all other resources, when the resource is depleted, an attempt in the app to consume the resource results in an exception. This exception can be caught by the app and handled, such as by displaying a friendly error message to the user. In the Python API, this exception is apiproxy_errors.OverQuotaError
.
An application may use the following resources, subject to quotas. Resources measured against adjustable quotas are indicated with "(adjustable)." Resource amounts represent an allocation over a 24 hour period. To see the quota amounts for your application, use the Administrator Console.
Quotas marked "(adjustable)" behave as fixed quotas during this preview period. When the billing feature is released, these quotas will be adjustable by the owner of the billing account.
The total processing time for handling requests, including time spent running the app and performing datastore operations. This does not include time spent waiting for other services, such as waiting for a URL fetch to return or the image service to transform an image.
CPU time is reported in "seconds," which is equivalent to the number of CPU cycles that can be performed by a 1.2 GHz Intel x86 processor in that amount of time. The actual number of CPU cycles spent varies greatly depending on conditions internal to App Engine, so this number is adjusted for reporting purposes using this processor as a reference measurement.
The number of times a single request handler exceeded a safety threshold for CPU time, about 0.84 CPU seconds per request. Datastore CPU time does not count towards the high CPU threshold (though it does count toward the CPU Time total). High CPU requests are limited to 2 per (clock-time) minute.
Ideally, an app would never exceed this threshold. This quota exists to help you identify and eliminate high-CPU activity from your request handlers. We are working on improving the way App Engine mitigates the impact of high-CPU requests, and we expect to make adjustments to this quota in the future.
Note that the high CPU threshold is separate from the request deadline, which terminates the request after a number of (clock-time) seconds.
To learn more about High CPU Requests, see the FAQ.