From e452eaf79ea531de1b561da6207627728f93efad Mon Sep 17 00:00:00 2001 From: Tony Bedford Date: Wed, 26 Oct 2022 16:13:50 +0100 Subject: [PATCH 01/10] Update for PAYG changes --- content/general/limits.textile | 64 ++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/content/general/limits.textile b/content/general/limits.textile index 67806b322e..2604fc6c9a 100644 --- a/content/general/limits.textile +++ b/content/general/limits.textile @@ -46,11 +46,11 @@ Instantaneous rate limits relate to the frequency of a given operation at a mome h4(#local-rates). Local instantaneous rate limits -Local instantaneous rate limits reject operations in excess of their hard limit and return an error code. For example, the limit on a self-service package for the message publish rate on an individual channel is 50 messages per second. Any message publish attempts in excess of the 50 messages per second will be rejected and an error code will be returned to the publisher. +Local instantaneous rate limits reject operations in excess of their hard limit and return an error code. For example, the limit on a PAYG package for the message publish rate on an individual channel is 2,400 messages per second. Any message publish attempts in excess of the 2,400 messages per second will be rejected and an error code will be returned to the publisher. h4(#global-rates). Global instantaneous rate limits -Global instantaneous rate limits apply rate suppression to operations that exceed their hard limits. Rate suppression is calculated on a rolling probabilistic basis. For example, the limit on a self-service package for publishing messages into a queue is 200 messages per second. If a queue rule is attempting to publish 400 messages per second into the queue, each message will have a 50% chance of being rejected. The suppression probability is continuously updated based on the publishing rate. +Global instantaneous rate limits apply rate suppression to operations that exceed their hard limits. Rate suppression is calculated on a rolling probabilistic basis. For example, the limit on a PAYG package for publishing messages into a queue is 200 messages per second. If a queue rule is attempting to publish 400 messages per second into the queue, each message will have a 50% chance of being rejected. The suppression probability is continuously updated based on the publishing rate. Global instantaneous rate limits only have a hard limit. Once the hard limit rate has been exceeded then message suppression will occur. As soon as the rate drops below the hard limit threshold, the suppression probability will decrease to zero. @@ -70,20 +70,22 @@ An example of a quantity-based limit is the one for peak connections. When the h h2(#quota). Quota limits -Quotas are based on the account "package":https://ably.com/pricing/calculator that you are on. Quotas specify the number of peak channels, peak connections, messages and bandwidth that you expect to consume each month. Monthly quotas can be configured for self-service accounts. Quotas for free accounts are fixed. Enterprise account quotas are set in a way that ensures that limits are not reached during normal operations for an account. +Quotas are based on the account "package":https://ably.com/pricing/calculator that you are on. Quotas specify the number of peak channels, peak connections, messages and bandwidth that you expect to consume each month. Quotas for free accounts are fixed. Enterprise account quotas are set in a way that ensures that limits are not reached during normal operations for an account. -The quotas for an account can be considered a soft limit, with no restrictions coming into effect until the hard limit is reached. Free accounts have a small buffer between the soft and hard limits. Self-service accounts have a considerably larger buffer between soft and hard limits, however any usage over the soft limit and up to the hard limit is charged as overages. +The quotas for an account can be considered a soft limit, with no restrictions coming into effect until the hard limit is reached. Free accounts have a small buffer between the soft and hard limits. -|_/2=. Limit |_\2=. Free |_\2=. Self-service |_\2=. Business (legacy) |_\2=. Enterprise | +|_/2=. Limit |_\2=. Free |_\2=. PAYG |_\2=. Business (legacy) |_\2=. Enterprise | |_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard | -| "Peak connections":#peak-connections | 200 | 240 | Quota | 2.5x quota | Quota | 5x quota |\2. Custom | -| "Peak channels":#peak-channels | 200 | 240 | Quota | 2.5x quota | Quota | 5x quota |\2. Custom | -| "Total messages":#messages | 6,000,000 | 7,200,000 | Quota | 2.5x quota | Quota | 5x quota |\2. Custom | -| "Messages":#messages (per hour) | 84,000 | 100,000 | Quota / 72 | 2.5x quota / 72 | Quota / 72 | 5x quota / 72 |\2. Custom | -| "Message rate":#messages (per second) | - | 70 | - | Hourly * 2.5 | - | Hourly * 2.5 |\2. Custom | -| "Total bandwidth":#bandwidth (GiB) | 11.5 | 13.8 | Quota | 2.5x quota | Quota | 5x quota |\2. Custom | -| "Bandwidth":#bandwidth (per hour in MiB) | 160 | 190 | Quota / 72 | 2.5x quota / 72 | Quota / 72 | 5x quota / 72 |\2. Custom | -| "Bandwidth rate":#bandwidth (per second in KiB ) | - | 132 | - | Hourly * 2.5 | - | Hourly * 2.5 |\2. Custom | +| "Peak connections":#peak-connections | 200 | 240 | 10,000 | 25,000 | Quota | 5x quota |\2. Custom | +| "Peak channels":#peak-channels | 200 | 240 | 10,000 | 25,000 | Quota | 5x quota |\2. Custom | +| "Total messages":#messages | 6,000,000 | 7,200,000 | No limit | No limit | Quota | 5x quota |\2. Custom | +| "Messages":#messages (per hour) | 84,000 | 100,000 | 1,400,000 | 3,500,000 | Quota / 72 | 5x quota / 72 |\2. Custom | +| "Message rate":#messages (per second) | - | 70 | - | 2,400 | - | Hourly * 2.5 |\2. Custom | +| "Total bandwidth":#bandwidth (GiB) | 11.5 | 13.8 | 190 | 475 | Quota | 5x quota |\2. Custom | +| "Bandwidth":#bandwidth (per hour in MiB) | 160 | 190 | 2.6 | 6.6 | Quota / 72 | 5x quota / 72 |\2. Custom | +| "Bandwidth rate":#bandwidth (per second in KiB ) | - | 132 | - | 4,600 | - | Hourly * 2.5 |\2. Custom | + +Note, for PAYG, with max messages per month, there is a practical limit of 2.5B messsages, based on the hourly hard throughput limit. h3(#peak-connections). Peak connections @@ -192,7 +194,7 @@ h2(#app-limits). App limits App limits relate to the quantity of resources that can be created per account. -|_=. Limit |_=. Free |_=. Self-service |_=. Business (legacy) |_=. Enterprise | +|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Enterprise | | "Number of apps":#apps (per account) |\4=. 100 | | "Number of API keys":#api-keys (per account) |\4=. 100 | | "Number of rules":#rules (per account) |\4=. 100 | @@ -226,10 +228,10 @@ h2(#token). Token request limits Token request limits relate to the rate and size of "token requests":/core-features/authentication#token-authentication made to Ably. -|_/2=. Limit |_\2=. Free |_\2=. Self-service |_\2=. Business (legacy) |_\2=. Enterprise | +|_/2=. Limit |_\2=. Free |_\2=. PAYG |_\2=. Business (legacy) |_\2=. Enterprise | |_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard | -| "Token requests":#token-rate (per hour) | 72,000 | 86,000 | 0.4 * hard limit | "Connection rate":#connection-rate per hour / 1000 | 0.2 * hard limit | "Connection rate":#connection-rate per hour / 1000 |\2. Custom | -| "Token request rate":#token-rate (per second) | - | 50 | - | 0.4 * hourly limit | - | 0.2 * hourly limit |\2. Custom | +| "Token requests":#token-rate (per hour) | 72,000 | 86,000 | 120,000 | 300,000 | 0.2 * hard limit | "Connection rate":#connection-rate per hour / 1000 |\2. Custom | +| "Token request rate":#token-rate (per second) | - | 50 | - | 208 | - | 0.2 * hourly limit |\2. Custom | | "Token request size":#token-size |\8=. 128KiB | h3(#token-rate). Token request rate @@ -265,8 +267,8 @@ h2(#connection). Connection limits Connection limits relate to the "realtime connections":/realtime/connection to Ably from your account. -|_=. Limit |_=. Free |_=. Self-service |_=. Business (legacy) |_=. Enterprise | -| "Connection rate":#connection-rate (per second) | 20 | 50 minimum | 50 minimum | Custom | +|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Enterprise | +| "Connection rate":#connection-rate (per second) | 20 | 85 | 50 minimum | Custom | | "Number of channels":#connection-channels (per connection) | 50 | 200 | 200 | Custom | | "Outbound message rate":#outbound-message (per second) | 15 | 50 | 50 | Custom | | "Inbound message rate":#inbound-message (per second) | 15 | 50 | 50 | Custom | @@ -276,7 +278,7 @@ h3(#connection-rate). Connection rate The connection rate limit is the maximum rate at which new "realtime connections":/realtime/connection can be made to Ably. -The limit is calculated based on the hard limit for "peak connections":#peak-connections, with a minimum value of 50 per second for self-service accounts. +The limit is calculated based on the hard limit for "peak connections":#peak-connections. If the connection rate is exceeded, a "global instantaneous rate limit":#global-rates will be applied to new connection attempts. @@ -308,10 +310,10 @@ h2(#channel). Channel limits Channel limits relate to the number, rate and membership of "channels":/glossary#channels on your account. -|_=. Limit |_=. Free |_=. Self-service |_=. Business (legacy) |_=. Enterprise | +|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Enterprise | | "Number of subscribers":#subscribers (per channel) |\4=. Unlimited | | "Presence members":#presence-members (per channel) | 50 | 200 | 200 | Custom | -| "Channel creation rate":#channel-create (per second) | 20 | 50 minimum | 50 minimum | Custom | +| "Channel creation rate":#channel-create (per second) | 20 | 85 | 50 minimum | Custom | | "Message publish rate":#message-publish-rate (per second) | 15 | 50 | 50 | Custom | h3(#subscribers). Number of subscribers @@ -337,7 +339,7 @@ h3(#channel-create). Channel creation rate The channel creation rate limit is the maximum rate at which channels can be created across your Ably account. -The limit is calculated based on the hard limit for "peak channels":#peak-channels, with a minimum value of 50 per second for self-service accounts. +The limit is calculated based on the hard limit for "peak channels":#peak-channels. If the channel creation rate is exceeded, a "global instantaneous rate limit":#global-rates will be applied to channel creation. @@ -351,7 +353,7 @@ h2(#message). Message limits Message limits relate to the number, rate and bandwidth of "messages":/realtime/messages on your account. -|_=. Limit |_=. Free |_=. Self-service |_=. Business (legacy) |_=. Enterprise | +|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Enterprise | | "Message size":#message-size (KiB) | 16 | 64 | 64 | 256 | | "History TTL":#history-ttl (hours) | 24 | 72 | 72 | Custom | @@ -369,7 +371,7 @@ h2(#queues). Queue limits Queue limits relate to the number, length and rates of "queues":/glossary#queues. -|_=. Limit |_=. Free |_=. Self-service |_=. Business (legacy) |_=. Enterprise | +|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Enterprise | | "Number of queues":#queue-numbers (per account) | 5 | 50 | 50 | Custom | | "Queue length":#queue-length (per account) | 10,000 | 50,000 | 50,000 | Custom | | "Queue publish rate":#queue-publish (per second) | 100 | 200 | 200 | Custom | @@ -399,10 +401,10 @@ h2(#integration). Integration limits Integration limits relate to the rate of "webhooks":/general/webhooks and the rate of messages streamed through "Firehose":/general/firehose. -|_=. Limit |_=. Free |_=. Self-service |_=. Business (legacy) |_=. Enterprise | +|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Enterprise | | "Webhook batch size":#webhook-batch | 50 | 100 | 100 | Custom | | "Webhook batch concurrency":#webhook-concurrency | 1 | 1 | 1 | Custom | -| "Firehose external queues message rate":#firehose-messages (per second) | 50 | - | - | Custom | +| "Firehose external queues message rate":#firehose-messages (per second) | 50 | 50 | - | Custom | | "Function invocation rate":#function-invocations (per second) | 15 | 30 | 30 | Custom | | "Function concurrency":#concurrent-functions | 30 | 60 | 60 | Custom | @@ -434,10 +436,10 @@ h2(#api). API request limits API request limits are the maximum number of REST API requests that can be made to Ably. This excludes "token requests":#token. -|_/2=. Limit |_\2=. Free |_\2=. Self-service |_\2=. Business (legacy) |_\2=. Enterprise | +|_/2=. Limit |_\2=. Free |_\2=. PAYG |_\2=. Business (legacy) |_\2=. Enterprise | |_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard | -| API requests (per hour) | 8,000 | 10,000 | 0.1 * hourly message soft limit | 0.1 * hourly message hard limit| 0.1 * hourly message soft limit | 0.1 * hourly message hard limit |\2. Custom | -| API request rate (per second) | - | 20 | - | 50 minimum | - | 50 minimum |\2. Custom | +| API requests (per hour) | 8,000 | 10,000 | 139,000 | 350,000 | 0.1 * hourly message soft limit | 0.1 * hourly message hard limit |\2. Custom | +| API request rate (per second) | - | 20 | - | 250 | - | 50 minimum |\2. Custom | If the API request rate is exceeded, a "global instantaneous rate limit":#global-rates will be applied to API requests. The hourly API request limit is a "time-based limit":#time, meaning no additional API requests will be accepted until the following hour if the hard limit is hit. @@ -464,7 +466,7 @@ h2(#control-api). Control API limits Control API limits relate to the number of requests that can be made using the "Control API":/control-api per hour. -|_=. Limit |_=. Free |_=. Self-service |_=. Business (legacy) |_=. Enterprise | +|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Enterprise | | "Authenticated account requests":#authenticated-account (per hour) | 4000 | 4000 | 4000 | 4000 | | "Authenticated access token requests":#authenticated-token (per hour) | 2000 | 2000 | 2000 | 2000 | | "Unauthenticated requests":#unauthenticated (per hour) | 60 | 60 | 60 | 60 | From b1d9ce5ac5a1f61f69abded7a7e9a10e54d39588 Mon Sep 17 00:00:00 2001 From: Tony Bedford Date: Tue, 22 Nov 2022 11:40:29 +0000 Subject: [PATCH 02/10] Change Enterprise to Committed Use --- content/general/limits.textile | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/content/general/limits.textile b/content/general/limits.textile index 2604fc6c9a..5db074da3d 100644 --- a/content/general/limits.textile +++ b/content/general/limits.textile @@ -19,7 +19,7 @@ jump_to: - Control API limits#control-api --- -Limits are applied to all accounts in order to prevent any impact on service caused by deliberate or accidental abuse. Limits vary depending on the "package":https://ably.com/pricing associated with your account and upgrading to a package with additional message, connection or channel allowance increases any related limits. Enterprise package limits are customizable. +Limits are applied to all accounts in order to prevent any impact on service caused by deliberate or accidental abuse. Limits vary depending on the "package":https://ably.com/pricing associated with your account and upgrading to a package with additional message, connection or channel allowance increases any related limits. Committed Use package limits are customizable. You can view the limits for your package in the "account dashboard":https://ably.com/accounts/any/package_limits or use the "calculator":https://ably.com/pricing/full-calculator to see how limits change based on connection, channel and message quotas. @@ -70,11 +70,11 @@ An example of a quantity-based limit is the one for peak connections. When the h h2(#quota). Quota limits -Quotas are based on the account "package":https://ably.com/pricing/calculator that you are on. Quotas specify the number of peak channels, peak connections, messages and bandwidth that you expect to consume each month. Quotas for free accounts are fixed. Enterprise account quotas are set in a way that ensures that limits are not reached during normal operations for an account. +Quotas are based on the account "package":https://ably.com/pricing/calculator that you are on. Quotas specify the number of peak channels, peak connections, messages and bandwidth that you expect to consume each month. Quotas for free accounts are fixed. Committed Use account quotas are set in a way that ensures that limits are not reached during normal operations for an account. The quotas for an account can be considered a soft limit, with no restrictions coming into effect until the hard limit is reached. Free accounts have a small buffer between the soft and hard limits. -|_/2=. Limit |_\2=. Free |_\2=. PAYG |_\2=. Business (legacy) |_\2=. Enterprise | +|_/2=. Limit |_\2=. Free |_\2=. PAYG |_\2=. Business (legacy) |_\2=. Committed Use | |_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard | | "Peak connections":#peak-connections | 200 | 240 | 10,000 | 25,000 | Quota | 5x quota |\2. Custom | | "Peak channels":#peak-channels | 200 | 240 | 10,000 | 25,000 | Quota | 5x quota |\2. Custom | @@ -194,7 +194,7 @@ h2(#app-limits). App limits App limits relate to the quantity of resources that can be created per account. -|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Enterprise | +|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Committed Use | | "Number of apps":#apps (per account) |\4=. 100 | | "Number of API keys":#api-keys (per account) |\4=. 100 | | "Number of rules":#rules (per account) |\4=. 100 | @@ -228,7 +228,7 @@ h2(#token). Token request limits Token request limits relate to the rate and size of "token requests":/core-features/authentication#token-authentication made to Ably. -|_/2=. Limit |_\2=. Free |_\2=. PAYG |_\2=. Business (legacy) |_\2=. Enterprise | +|_/2=. Limit |_\2=. Free |_\2=. PAYG |_\2=. Business (legacy) |_\2=. Committed Use | |_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard | | "Token requests":#token-rate (per hour) | 72,000 | 86,000 | 120,000 | 300,000 | 0.2 * hard limit | "Connection rate":#connection-rate per hour / 1000 |\2. Custom | | "Token request rate":#token-rate (per second) | - | 50 | - | 208 | - | 0.2 * hourly limit |\2. Custom | @@ -267,7 +267,7 @@ h2(#connection). Connection limits Connection limits relate to the "realtime connections":/realtime/connection to Ably from your account. -|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Enterprise | +|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Committed Use | | "Connection rate":#connection-rate (per second) | 20 | 85 | 50 minimum | Custom | | "Number of channels":#connection-channels (per connection) | 50 | 200 | 200 | Custom | | "Outbound message rate":#outbound-message (per second) | 15 | 50 | 50 | Custom | @@ -310,7 +310,7 @@ h2(#channel). Channel limits Channel limits relate to the number, rate and membership of "channels":/glossary#channels on your account. -|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Enterprise | +|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Committed Use | | "Number of subscribers":#subscribers (per channel) |\4=. Unlimited | | "Presence members":#presence-members (per channel) | 50 | 200 | 200 | Custom | | "Channel creation rate":#channel-create (per second) | 20 | 85 | 50 minimum | Custom | @@ -353,7 +353,7 @@ h2(#message). Message limits Message limits relate to the number, rate and bandwidth of "messages":/realtime/messages on your account. -|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Enterprise | +|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Committed Use | | "Message size":#message-size (KiB) | 16 | 64 | 64 | 256 | | "History TTL":#history-ttl (hours) | 24 | 72 | 72 | Custom | @@ -371,7 +371,7 @@ h2(#queues). Queue limits Queue limits relate to the number, length and rates of "queues":/glossary#queues. -|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Enterprise | +|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Committed Use | | "Number of queues":#queue-numbers (per account) | 5 | 50 | 50 | Custom | | "Queue length":#queue-length (per account) | 10,000 | 50,000 | 50,000 | Custom | | "Queue publish rate":#queue-publish (per second) | 100 | 200 | 200 | Custom | @@ -401,7 +401,7 @@ h2(#integration). Integration limits Integration limits relate to the rate of "webhooks":/general/webhooks and the rate of messages streamed through "Firehose":/general/firehose. -|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Enterprise | +|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Committed Use | | "Webhook batch size":#webhook-batch | 50 | 100 | 100 | Custom | | "Webhook batch concurrency":#webhook-concurrency | 1 | 1 | 1 | Custom | | "Firehose external queues message rate":#firehose-messages (per second) | 50 | 50 | - | Custom | @@ -436,7 +436,7 @@ h2(#api). API request limits API request limits are the maximum number of REST API requests that can be made to Ably. This excludes "token requests":#token. -|_/2=. Limit |_\2=. Free |_\2=. PAYG |_\2=. Business (legacy) |_\2=. Enterprise | +|_/2=. Limit |_\2=. Free |_\2=. PAYG |_\2=. Business (legacy) |_\2=. Committed Use | |_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard | | API requests (per hour) | 8,000 | 10,000 | 139,000 | 350,000 | 0.1 * hourly message soft limit | 0.1 * hourly message hard limit |\2. Custom | | API request rate (per second) | - | 20 | - | 250 | - | 50 minimum |\2. Custom | @@ -466,7 +466,7 @@ h2(#control-api). Control API limits Control API limits relate to the number of requests that can be made using the "Control API":/control-api per hour. -|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Enterprise | +|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Committed Use | | "Authenticated account requests":#authenticated-account (per hour) | 4000 | 4000 | 4000 | 4000 | | "Authenticated access token requests":#authenticated-token (per hour) | 2000 | 2000 | 2000 | 2000 | | "Unauthenticated requests":#unauthenticated (per hour) | 60 | 60 | 60 | 60 | From a6d73e6021058a95f03b2e1228cfb992751d6419 Mon Sep 17 00:00:00 2001 From: Tony Bedford Date: Tue, 22 Nov 2022 11:43:33 +0000 Subject: [PATCH 03/10] Clarify limit is default --- content/general/limits.textile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/general/limits.textile b/content/general/limits.textile index 5db074da3d..0d89eda279 100644 --- a/content/general/limits.textile +++ b/content/general/limits.textile @@ -46,11 +46,11 @@ Instantaneous rate limits relate to the frequency of a given operation at a mome h4(#local-rates). Local instantaneous rate limits -Local instantaneous rate limits reject operations in excess of their hard limit and return an error code. For example, the limit on a PAYG package for the message publish rate on an individual channel is 2,400 messages per second. Any message publish attempts in excess of the 2,400 messages per second will be rejected and an error code will be returned to the publisher. +Local instantaneous rate limits reject operations in excess of their hard limit and return an error code. For example, the default limit on a PAYG package for the message publish rate on an individual channel is 2,400 messages per second (higher limits are available). Any message publish attempts in excess of the 2,400 messages per second will be rejected and an error code will be returned to the publisher. h4(#global-rates). Global instantaneous rate limits -Global instantaneous rate limits apply rate suppression to operations that exceed their hard limits. Rate suppression is calculated on a rolling probabilistic basis. For example, the limit on a PAYG package for publishing messages into a queue is 200 messages per second. If a queue rule is attempting to publish 400 messages per second into the queue, each message will have a 50% chance of being rejected. The suppression probability is continuously updated based on the publishing rate. +Global instantaneous rate limits apply rate suppression to operations that exceed their hard limits. Rate suppression is calculated on a rolling probabilistic basis. For example, the default limit on a PAYG package for publishing messages into a queue is 200 messages per second. If a queue rule is attempting to publish 400 messages per second into the queue, each message will have a 50% chance of being rejected. The suppression probability is continuously updated based on the publishing rate. Global instantaneous rate limits only have a hard limit. Once the hard limit rate has been exceeded then message suppression will occur. As soon as the rate drops below the hard limit threshold, the suppression probability will decrease to zero. From a65f81d3eee4bd1f7c6a79c9667ba5eb1c68d88e Mon Sep 17 00:00:00 2001 From: Tony Bedford Date: Tue, 22 Nov 2022 11:46:04 +0000 Subject: [PATCH 04/10] Change link to pricing page --- content/general/limits.textile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/general/limits.textile b/content/general/limits.textile index 0d89eda279..03a9c1d8d7 100644 --- a/content/general/limits.textile +++ b/content/general/limits.textile @@ -70,7 +70,7 @@ An example of a quantity-based limit is the one for peak connections. When the h h2(#quota). Quota limits -Quotas are based on the account "package":https://ably.com/pricing/calculator that you are on. Quotas specify the number of peak channels, peak connections, messages and bandwidth that you expect to consume each month. Quotas for free accounts are fixed. Committed Use account quotas are set in a way that ensures that limits are not reached during normal operations for an account. +Quotas are based on the account "package":https://ably.com/pricing that you are on. Quotas specify the number of peak channels, peak connections, messages and bandwidth that you expect to consume each month. Quotas for free accounts are fixed. Committed Use account quotas are set in a way that ensures that limits are not reached during normal operations for an account. The quotas for an account can be considered a soft limit, with no restrictions coming into effect until the hard limit is reached. Free accounts have a small buffer between the soft and hard limits. From 9b317c5b35afa5dab6f6107ab1e2f16a45fc8bc7 Mon Sep 17 00:00:00 2001 From: Tony Bedford Date: Tue, 22 Nov 2022 11:55:20 +0000 Subject: [PATCH 05/10] Update quota limits table --- content/general/limits.textile | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/content/general/limits.textile b/content/general/limits.textile index 03a9c1d8d7..44d8d69f24 100644 --- a/content/general/limits.textile +++ b/content/general/limits.textile @@ -74,18 +74,18 @@ Quotas are based on the account "package":https://ably.com/pricing that you are The quotas for an account can be considered a soft limit, with no restrictions coming into effect until the hard limit is reached. Free accounts have a small buffer between the soft and hard limits. -|_/2=. Limit |_\2=. Free |_\2=. PAYG |_\2=. Business (legacy) |_\2=. Committed Use | -|_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard | -| "Peak connections":#peak-connections | 200 | 240 | 10,000 | 25,000 | Quota | 5x quota |\2. Custom | -| "Peak channels":#peak-channels | 200 | 240 | 10,000 | 25,000 | Quota | 5x quota |\2. Custom | -| "Total messages":#messages | 6,000,000 | 7,200,000 | No limit | No limit | Quota | 5x quota |\2. Custom | -| "Messages":#messages (per hour) | 84,000 | 100,000 | 1,400,000 | 3,500,000 | Quota / 72 | 5x quota / 72 |\2. Custom | -| "Message rate":#messages (per second) | - | 70 | - | 2,400 | - | Hourly * 2.5 |\2. Custom | -| "Total bandwidth":#bandwidth (GiB) | 11.5 | 13.8 | 190 | 475 | Quota | 5x quota |\2. Custom | -| "Bandwidth":#bandwidth (per hour in MiB) | 160 | 190 | 2.6 | 6.6 | Quota / 72 | 5x quota / 72 |\2. Custom | -| "Bandwidth rate":#bandwidth (per second in KiB ) | - | 132 | - | 4,600 | - | Hourly * 2.5 |\2. Custom | - -Note, for PAYG, with max messages per month, there is a practical limit of 2.5B messsages, based on the hourly hard throughput limit. +|_/2=. Limit |_\2=. Free |_\2=. PAYG |_\2=. Committed Use | +|_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard | +| "Peak connections":#peak-connections | 200 | 240 | 10,000 | 25,000 |\2. Custom >= PAYG | +| "Peak channels":#peak-channels | 200 | 240 | 10,000 | 25,000 |\2. Custom >= PAYG | +| "Total monthly messages":#messages | 6,000,000 | 7,200,000 | No limit | No limit |\2. No limit | +| "Messages":#messages (per hour) | 84,000 | 100,000 | 1,400,000 | 3,500,000 |\2. Custom >= PAYG | +| "Message rate":#messages (per second) | - | 70 | - | 2,400 |\2. Custom >= PAYG | +| "Total bandwidth":#bandwidth (GiB) | 11.5 | 13.8 | 190 | 475 |\2. Custom >= PAYG | +| "Bandwidth":#bandwidth (per hour in MiB) | 160 | 190 | 2.6 | 6.6 |\2. Custom >= PAYG | +| "Bandwidth rate":#bandwidth (per second in KiB ) | - | 132 | - | 4,600 |\2. Custom >= PAYG | + +Limits on any paid account can be increased - "contact us":http://ably.com/support to request a higher limit. h3(#peak-connections). Peak connections From 8d2e6f98854839d1d55d84630b06abc5f99e4dcf Mon Sep 17 00:00:00 2001 From: Tony Bedford Date: Tue, 22 Nov 2022 11:59:19 +0000 Subject: [PATCH 06/10] Update messages section --- content/general/limits.textile | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/content/general/limits.textile b/content/general/limits.textile index 44d8d69f24..bca0484ae6 100644 --- a/content/general/limits.textile +++ b/content/general/limits.textile @@ -125,13 +125,9 @@ There are three types of peak channel limit notifications you may receive: h3(#messages). Messages -Message counts and rates are the number of "messages":/glossary#messages published and received in your account. +Message counts and rates are the number of "messages":/glossary#messages published and received in your account. In paid accounts, there are only limits to the amount of messages that can be sent hourly and per-second. -* The total messages for a month are set based on your quota. -* The hourly message limit is calculated using the total message limit divided by 72. -* The message rate is calculated using the hourly limit multiplied by 2.5, divided into seconds. For example, if the hourly limit is 208,000 then the message rate will be @(208,000 x 2.5) / 60 / 60 = 145@. - -If the message rate is exceeded, a "global instantaneous rate limit":#global-rates will be applied to message delivery and publishing. The hourly and total message limits are "time-based":#time. If the hard limit is hit for those, message delivery and publishing will be blocked until the following hour or month. +If the message rate is exceeded, a "global instantaneous rate limit":#global-rates will be applied to message delivery and publishing. The hourly message limits are "time-based":#time. If the hard limit is hit for those, message delivery and publishing will be blocked until the following hour. h4(#message-notifications). Message notifications From 24dfb3ba279a13965aa3216b860cba9c56704c8e Mon Sep 17 00:00:00 2001 From: Tony Bedford Date: Tue, 22 Nov 2022 12:01:00 +0000 Subject: [PATCH 07/10] App limits -> application limits as requested --- content/general/limits.textile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/general/limits.textile b/content/general/limits.textile index bca0484ae6..2cc094f1b4 100644 --- a/content/general/limits.textile +++ b/content/general/limits.textile @@ -186,9 +186,9 @@ There are three types of monthly bandwidth limit notifications you may receive: * @messages.monthly.soft.data@ - when your pre-paid quota has been exceeded. * @messages.monthly.hard.data@ - when the hard limit on the account has been exceeded. -h2(#app-limits). App limits +h2(#app-limits). Application limits -App limits relate to the quantity of resources that can be created per account. +Application limits relate to the quantity of resources that can be created per account. |_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Committed Use | | "Number of apps":#apps (per account) |\4=. 100 | From d25361ae13f2d56b7e4d39c237b1421c5fe90610 Mon Sep 17 00:00:00 2001 From: Tony Bedford Date: Tue, 22 Nov 2022 12:02:45 +0000 Subject: [PATCH 08/10] Remove business from application limits table --- content/general/limits.textile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/general/limits.textile b/content/general/limits.textile index 2cc094f1b4..77fa096c8a 100644 --- a/content/general/limits.textile +++ b/content/general/limits.textile @@ -190,7 +190,7 @@ h2(#app-limits). Application limits Application limits relate to the quantity of resources that can be created per account. -|_=. Limit |_=. Free |_=. PAYG |_=. Business (legacy) |_=. Committed Use | +|_=. Limit |_=. Free |_=. PAYG |_=. Committed Use | | "Number of apps":#apps (per account) |\4=. 100 | | "Number of API keys":#api-keys (per account) |\4=. 100 | | "Number of rules":#rules (per account) |\4=. 100 | From 0509d2872a7f94d11de5a53b38c6e27f4d88175f Mon Sep 17 00:00:00 2001 From: Tony Bedford Date: Tue, 22 Nov 2022 12:06:13 +0000 Subject: [PATCH 09/10] Update token request limits table --- content/general/limits.textile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/general/limits.textile b/content/general/limits.textile index 77fa096c8a..b87f4f38b5 100644 --- a/content/general/limits.textile +++ b/content/general/limits.textile @@ -224,11 +224,11 @@ h2(#token). Token request limits Token request limits relate to the rate and size of "token requests":/core-features/authentication#token-authentication made to Ably. -|_/2=. Limit |_\2=. Free |_\2=. PAYG |_\2=. Business (legacy) |_\2=. Committed Use | -|_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard | -| "Token requests":#token-rate (per hour) | 72,000 | 86,000 | 120,000 | 300,000 | 0.2 * hard limit | "Connection rate":#connection-rate per hour / 1000 |\2. Custom | -| "Token request rate":#token-rate (per second) | - | 50 | - | 208 | - | 0.2 * hourly limit |\2. Custom | -| "Token request size":#token-size |\8=. 128KiB | +|_/2=. Limit |_\2=. Free |_\2=. PAYG |_\2=. Committed Use | +|_. Soft |_. Hard |_. Soft |_. Hard |_. Soft |_. Hard | +| "Token requests":#token-rate (per hour) | 72,000 | 86,000 | 120,000 | 300,000 |\2. Custom >= PAYG | +| "Token request rate":#token-rate (per second) | - | 50 | - | 208 |\2. Custom >= PAYG | +| "Token request size":#token-size |\6=. 128KiB | h3(#token-rate). Token request rate From 5af66eee8cec9a41cdd6210f9c440c8550af3476 Mon Sep 17 00:00:00 2001 From: Tony Bedford Date: Tue, 22 Nov 2022 14:50:11 +0000 Subject: [PATCH 10/10] Update opening paragraph --- content/general/limits.textile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/content/general/limits.textile b/content/general/limits.textile index b87f4f38b5..53ff28dded 100644 --- a/content/general/limits.textile +++ b/content/general/limits.textile @@ -19,9 +19,11 @@ jump_to: - Control API limits#control-api --- -Limits are applied to all accounts in order to prevent any impact on service caused by deliberate or accidental abuse. Limits vary depending on the "package":https://ably.com/pricing associated with your account and upgrading to a package with additional message, connection or channel allowance increases any related limits. Committed Use package limits are customizable. +Certain limits are applied in order to prevent any impact on service caused by accidental or deliberate abuse. Limits vary depending on the "package":https://ably.com/pricing associated with your account. You can view the limits for your package in the "account dashboard":https://ably.com/accounts/any/package_limits. -You can view the limits for your package in the "account dashboard":https://ably.com/accounts/any/package_limits or use the "calculator":https://ably.com/pricing/full-calculator to see how limits change based on connection, channel and message quotas. +PAYG accounts have high default limits, but far higher limits can be set if needed. All Committed Use package limits are customizable. + +"Contact us":http://ably.com/support if your application requires limits beyond what's currently set for your package. h2(#overview). Overview