Applications limits
Check the bounds of an application, its rules and settings, and of the Cache, Application Accelerator, and Image Processor settings it carries, by plan.
An application runs request and response rules, and it can proxy WebSocket connections to the origin through WebSocket Proxy. Each Product enabled on it brings bounds of its own: cache settings and Real-Time Purge requests for Cache, the cache TTL floor for Application Accelerator, and processed images for Image Processor. This page states each bound, the answer a call receives where the API refuses it, and the usage each service plan includes.
A default limit bounds one object, one request, or one account. An included amount bounds one month of use, and each service plan includes a different amount. Azion offers three service plans: Hobby, Pro, and Enterprise. On Hobby, use past an included amount may require an upgrade, and Azion may restrict the account. On Pro and Enterprise, Azion bills that use at on-demand rates, and on Pro you can set a spend limit to control the charge.
Applications, rules, and connections
These bounds apply to every application, whichever Products it has enabled. They cover the rules in its Rules Engine, the Debug Rules log, the connections it keeps open, and the number of applications an account holds.
Default limits
Each row names what is bounded and the bound. Azion can raise these limits on request, based on the plan, and the WebSocket connection time is one of them. For an increase, contact the technical support team.
| Scope | Limit |
|---|---|
| Rules in one application, request and response phases together | 200 |
| Criteria groups per rule | 1 to 5 |
| Criteria per group | 1 to 10 |
| Behaviors per rule | 1 to 10 |
| Behavior argument | 1,600 characters |
| Debug Rules log size | 1.5 kB |
| Maximum WebSocket connection time | 15 minutes |
| Keepalive connection between a user and an application | Approximately 15 minutes |
The 200 rules are one total that the request phase and the response phase share. For example, an application can carry 150 request rules and 50 response rules, but not 200 of each.
Azion recycles the keepalive connections on its servers approximately every 15 minutes. That cycle bounds how long a connection between a user and an application stays open. An active connection that needs more time can be terminated. When a WebSocket connection is terminated this way, the application handles the closed connection and opens it again. For a large file, fragments or compression raise the transfer speed, so the transfer can finish in time.
To store a large file in fragments, refer to Cache settings. To compress it, refer to Compress application responses with gzip.
Applications per account
The number of applications one account holds depends on its Support service. Mission-Critical sets an amount that is customizable for the account. To request a higher number, contact the technical support team.
| Scope | Developer | Business | Enterprise | Mission-Critical |
|---|---|---|---|---|
| Applications per account | 10 | 50 | 200 | Customizable |
For what each Support service includes, refer to Pricing.
Cache
Cache bounds a cache setting, the object a cache setting holds, and a Real-Time Purge request. Past a bound that the API checks, the call returns HTTP 400 with an error code and a title. Tiered Cache changes two bounds of a cache setting: the lowest TTL it takes and the cache behavior it allows.
For a higher limit on the account, contact the technical support team. The TTL bounds are the exception: the API validates them on every cache setting, and Azion does not raise them on request.
Cache settings
Each bound in this table applies to one cache setting, from any interface that writes it. The Scope column names the API field and, where one exists, the Console label. The Past the limit column carries the code and the title of the 400 answer.
| Scope | Limit | Past the limit |
|---|---|---|
Cache TTL minimum, Max Age (modules.cache.max_age) | 60 seconds; 0 seconds with Application Accelerator on the application | Error 21021, Edge Cache Max Age Lower Than The Minimum Allowed By Application's Application Accelerator Module, with meta.min_value set to 60. |
| Cache TTL minimum with Tiered Cache on | 3 seconds, with Application Accelerator on; without it, the 60-second minimum holds | Error 21020, Edge Cache Max Age Lower Than The Minimum Allowed By The Tiered Cache Module, with meta.min_value set to 3. |
| Cache TTL maximum | 31,536,000 seconds, one year | Error 10068, Max Value, with the detail Ensure this value is less than or equal to 31536000. |
Cache behavior with Tiered Cache on (modules.cache.behavior) | override only | Error 21001, It's Not Possible To Use This Edge Cache Behavior. |
Browser cache TTL (browser_cache.max_age) | 0 to 31,536,000 seconds | Error 10068, Max Value. |
Cache setting name, Name (name) | 250 characters | Error 10046, Max Length, with the detail Ensure this field has no more than 250 characters. |
A cache setting with modules.cache.stale_cache.enabled set to true can serve an expired copy for a limited window. Under the honor behavior, the window is the value of the origin’s stale-while-revalidate=<ttl> directive. Under override, or when the origin omits the directive, the window is 300 seconds.
Cached objects
Two bounds apply to an object that Cache stores: its size, and the size of each fragment of a large file stored in pieces.
| Scope | Limit |
|---|---|
| Single object in cache | 10 GB |
Fragment size of a large file (modules.cache.large_file_cache.offset) | 1,024 kB per fragment, fixed |
A fragment size larger than 1,024 returns error 10068, Max Value, with the detail Ensure this value is less than or equal to 1024. To change the fragment size, contact the Sales team.
Real-Time Purge
Each bound in this table applies to a purge request, from any interface that sends one. The Past the limit column carries what the API returns past the bound.
| Scope | Limit | Past the limit |
|---|---|---|
| Objects in one URL or cache key purge request | 50 objects | Error 10065, List Field Max Length, with the detail Ensure this field has no more than 50 elements. |
| Wildcards in one purge request | 1 wildcard | Error 10065, List Field Max Length, with the detail Ensure this field has no more than 1 elements. |
| URL or cache key length | 4,096 characters | The API does not refuse a longer URL when it receives the request. A purge of one 4,098-character URL returns HTTP 201. |
Six more bounds set the rate of purge requests, the length of a wildcard, and how much purge history Azion keeps.
| Scope | Limit |
|---|---|
| URL and cache key purge requests per client | 200 requests, 50 objects each |
| Objects purged by URL and cache key every 60 seconds | 10,000 objects |
| Wildcard purge requests per day, in a 24-hour interval | 2,000 requests |
| Wildcard length | 256 characters |
| Requests kept in the purge history | 1,000,000 requests |
| Time a request stays in the purge history | 6 months |
Included usage per plan
Cache is billed on purges, and each service plan includes a number of them every month.
| Metric | Hobby | Pro | Enterprise |
|---|---|---|---|
| Purges | 1,000 / month | 2,000 / month | Custom |
The Purges metric counts each purge operation that the account runs during the month. Tiered Cache is included on every plan. The pricing page lists data transfer under Application Accelerator, so that amount sits with the bounds of Application Accelerator.
For the rate past the included purges, refer to Pricing. To query the data that Tiered Cache has transferred, refer to Query usage data from Tiered Cache.
Application Accelerator
Application Accelerator changes one bound of a cache setting: the shortest time Cache holds an object. modules.cache.max_age sets that time in seconds, and Azion Console renders the field as Max Age in the Cache section of a cache setting. The field takes an integer from 0 to 31,536,000 and refuses any value outside that range. Whether Application Accelerator and Tiered Cache are on decides how low inside the range a cache setting goes.
Default limits
Each row names a cache TTL bound and the condition that puts it in force.
| Scope | Limit | Applies when |
|---|---|---|
| Minimum cache TTL | 60 seconds | Application Accelerator is off on the application, with Tiered Cache on or off. |
| Minimum cache TTL | 0 seconds | Application Accelerator is on, and Tiered Cache is off. |
| Minimum cache TTL | 3 seconds | Application Accelerator is on, and Tiered Cache is on. |
| Maximum cache TTL | 31,536,000 seconds, one year | Every cache setting, whichever Products are on. |
A Max Age lower than the minimum in force returns HTTP 400. The error is 21021 while Application Accelerator is off, and 21020 while Application Accelerator and Tiered Cache are both on. A value higher than the maximum returns error 10068. For the error titles, refer to Cache settings.
The 3-second floor comes from Tiered Cache rather than from Application Accelerator. Tiered Cache requires at least 3 seconds, which narrows the 0-second floor that Application Accelerator unlocks. A Max Age of 0 seconds still keeps the request on the cache path, so it differs from bypassing the cache. For how each one handles a request, refer to How Applications works.
These TTL bounds are validations the API applies to every cache setting, and Azion does not raise them on request. The cache_vary_by_method array of a cache setting takes at most 2 values, post and options, and the API specification sets that cap.
A request that Application Accelerator varies is still bounded by the Products that store the object and run code on it. Cache bounds the object itself: the size of one cached object, and the size of each fragment of a large file. For those values, refer to Cached objects. A function the application runs on Functions carries its own limits on its code and on each invocation. For those values, refer to Functions limits.
Included usage per plan
Application Accelerator is billed on data transfer, and each service plan includes an amount of it every month.
| Metric | Hobby | Pro | Enterprise |
|---|---|---|---|
| Data transfer | 1 TB / month | 2 TB / month | Custom |
Cache variation, which the pricing page lists as Custom Cache Keys, and path rewrites are included on every plan. For the rates past the included data transfer, refer to Pricing.
Image Processor
Image Processor bounds a single image with three default limits, and each service plan includes a number of processed images every month. The size, width, and height bound one image. The monthly amount bounds the account.
Default limits
Image Processor applies these default limits to an image. To raise one of them for the account, contact the technical support team.
| Scope | Limit |
|---|---|
| Maximum size | 150 MB |
| Maximum width | 3840 pixels |
| Maximum height | 2160 pixels |
Each ims parameter also accepts a range of values of its own. For the range of each parameter, refer to URL parameters.
Included usage per plan
Every service plan includes a number of processed images each month, and the amount differs by plan.
| Metric | Hobby | Pro | Enterprise |
|---|---|---|---|
| Images | 5,000 / month | 10,000 / month | Custom |
Image Processor counts one image each time it processes an image on a request, whether the request optimizes, crops, resizes, filters, or converts the format. An image that Cache serves without processing does not count, so a derived image already in cache adds nothing on the requests the cache answers. For example, a photograph served in three widths counts as three images. The later requests that the cache answers for those widths count none.
For the rates of the Images metric, refer to Pricing. To query the number of images the account has processed, refer to Query usage data from Image Processor.