mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 17:35:10 +03:00
docs: rename Realtime quotas to Limits (#41816)
We use the quota term for actual billing quotas, so using "Quota" as a term for configurable Realtime limits is confusing. While there are varying per-plan limits, they are not used for billing. Realtime Quotas on plans refer to Realtime Messages and Realtime Peak Connections
This commit is contained in:
1 parent
718fa372d4
commit
140e74435d
10 files changed
+82
-77
No files matched your search
@@ -1871,7 +1871,7 @@ export const realtime: NavMenuConstant = {
|
||||
name: 'Deep dive',
|
||||
url: undefined,
|
||||
items: [
|
||||
{ name: 'Quotas', url: '/guides/realtime/quotas', enabled: billingEnabled },
|
||||
{ name: 'Limits', url: '/guides/realtime/limits', enabled: billingEnabled },
|
||||
{
|
||||
name: 'Pricing',
|
||||
url: '/guides/realtime/pricing' as `/${string}`,
|
||||
|
||||
@@ -84,10 +84,10 @@ After developing your project and deciding it's production ready, you should run
|
||||
| Create or Verify an MFA challenge | `/auth/v1/factors/:id/challenge` `/auth/v1/factors/:id/verify` | IP Address | 15 requests per minute (with bursts up to 30 requests) |
|
||||
| Anonymous sign-ins | `/auth/v1/signup`[^2] | IP Address | 30 requests per hour (with bursts up to 30 requests) |
|
||||
|
||||
### Realtime quotas
|
||||
### Realtime limits
|
||||
|
||||
- Review the [Realtime quotas](/docs/guides/realtime/quotas).
|
||||
- If you need quotas increased you can always [contact support](/dashboard/support/new).
|
||||
- Review the [Realtime limits](/docs/guides/realtime/limits).
|
||||
- If you need limits increased you can always [contact support](/dashboard/support/new).
|
||||
|
||||
### Abuse prevention
|
||||
|
||||
|
||||
@@ -688,7 +688,7 @@ Now that you understand the basics, dive deeper into each feature:
|
||||
|
||||
- **[Architecture](/docs/guides/realtime/architecture)** - Understand how Realtime works under the hood
|
||||
- **[Benchmarks](/docs/guides/realtime/benchmarks)** - Performance characteristics and scaling considerations
|
||||
- **[Quotas](/docs/guides/realtime/quotas)** - Usage limits and best practices
|
||||
- **[Limits](/docs/guides/realtime/limits)** - Usage limits and best practices
|
||||
|
||||
### Integration guides
|
||||
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
---
|
||||
id: 'limits'
|
||||
title: 'Realtime Limits'
|
||||
description: 'Understanding Realtime limits'
|
||||
sidebar_label: 'Limits'
|
||||
---
|
||||
|
||||
Our cluster supports millions of concurrent connections and message throughput for production workloads.
|
||||
|
||||
<Admonition type="note">
|
||||
|
||||
Upgrade your plan to increase your limits. Without a spend cap, or on an Enterprise plan, some limits are still in place to protect budgets. All limits are configurable per project. [Contact support](/dashboard/support/new) if you need your limits increased.
|
||||
|
||||
</Admonition>
|
||||
|
||||
## Limits by plan
|
||||
|
||||
| | Free | Pro | Pro (no spend cap) | Team | Enterprise |
|
||||
| ----------------------------------------------------------------------------------- | -------- | -------- | ------------------ | -------- | ---------- |
|
||||
| **Concurrent connections** | 200 | 500 | 10,000 | 10,000 | 10,000+ |
|
||||
| **Messages per second** | 100 | 500 | 2,500 | 2,500 | 2,500+ |
|
||||
| **Channel joins per second** | 100 | 500 | 2,500 | 2,500 | 2,500+ |
|
||||
| **Channels per connection** | 100 | 100 | 100 | 100 | 100+ |
|
||||
| **Presence keys per object** | 10 | 10 | 10 | 10 | 10+ |
|
||||
| **Presence messages per second** | 20 | 50 | 1,000 | 1,000 | 1,000+ |
|
||||
| **Broadcast payload size** | 256 KB | 3,000 KB | 3,000 KB | 3,000 KB | 3,000+ KB |
|
||||
| **Postgres change payload size ([**read more**](#postgres-changes-payload-limit))** | 1,024 KB | 1,024 KB | 1,024 KB | 1,024 KB | 1,024+ KB |
|
||||
|
||||
Beyond the Free and Pro Plan you can customize your limits by [contacting support](/dashboard/support/new).
|
||||
|
||||
## Limit errors
|
||||
|
||||
When you exceed a limit, errors will appear in the backend logs and client-side messages in the WebSocket connection.
|
||||
|
||||
- **Logs**: check the [Realtime logs](/dashboard/project/_/database/realtime-logs) inside your project Dashboard.
|
||||
- **WebSocket errors**: Use your browser's developer tools to find the WebSocket initiation request and view individual messages.
|
||||
|
||||
<Admonition type="tip" label="Realtime Inspector">
|
||||
|
||||
You can use the [Realtime Inspector](https://realtime.supabase.com/inspector/new) to reproduce an error and share those connection details with Supabase support.
|
||||
|
||||
</Admonition>
|
||||
Some limits can cause a Channel join to be refused. Realtime will reply with one of the following WebSocket messages:
|
||||
|
||||
### `too_many_channels`
|
||||
|
||||
Too many channels currently joined for a single connection.
|
||||
|
||||
### `too_many_connections`
|
||||
|
||||
Too many total concurrent connections for a project.
|
||||
|
||||
### `too_many_joins`
|
||||
|
||||
Too many Channel joins per second.
|
||||
|
||||
### `tenant_events`
|
||||
|
||||
Connections will be disconnected if your project is generating too many messages per second. `supabase-js` will reconnect automatically when the message throughput decreases below your plan limit. An `event` is a WebSocket message delivered to, or sent from a client.
|
||||
|
||||
## Postgres changes payload limit
|
||||
|
||||
When this limit is reached, the `new` and `old` record payloads only include the fields with a value size of less than or equal to 64 bytes.
|
||||
@@ -1,63 +0,0 @@
|
||||
---
|
||||
id: 'quotas'
|
||||
title: 'Realtime Quotas'
|
||||
description: 'Understanding Realtime quotas'
|
||||
sidebar_label: 'Quotas'
|
||||
---
|
||||
|
||||
Our cluster supports millions of concurrent connections and message throughput for production workloads.
|
||||
|
||||
<Admonition type="note">
|
||||
|
||||
Upgrade your plan to increase your quotas. Without a spend cap, or on an Enterprise plan, some quotas are still in place to protect budgets. All quotas are configurable per project. [Contact support](/dashboard/support/new) if you need your quotas increased.
|
||||
|
||||
</Admonition>
|
||||
|
||||
## Quotas by plan
|
||||
|
||||
| | Free | Pro | Pro (no spend cap) | Team | Enterprise |
|
||||
| -------------------------------------------------------------------------------------- | ----- | ----- | ------------------ | ------ | ---------- |
|
||||
| **Concurrent connections** | 200 | 500 | 10,000 | 10,000 | 10,000+ |
|
||||
| **Messages per second** | 100 | 500 | 2,500 | 2,500 | 2,500+ |
|
||||
| **Channel joins per second** | 100 | 500 | 2,500 | 2,500 | 2,500+ |
|
||||
| **Channels per connection** | 100 | 100 | 100 | 100 | 100+ |
|
||||
| **Presence keys per object** | 10 | 10 | 10 | 10 | 10+ |
|
||||
| **Presence messages per second** | 20 | 50 | 1,000 | 1,000 | 1,000+ |
|
||||
| **Broadcast payload size KB** | 256 | 3,000 | 3,000 | 3,000 | 3,000+ |
|
||||
| **Postgres change payload size KB ([**read more**](#postgres-changes-payload-quota))** | 1,024 | 1,024 | 1,024 | 1,024 | 1,024+ |
|
||||
|
||||
Beyond the Free and Pro Plan you can customize your quotas by [contacting support](/dashboard/support/new).
|
||||
|
||||
## Quota errors
|
||||
|
||||
When you exceed a quota, errors will appear in the backend logs and client-side messages in the WebSocket connection.
|
||||
|
||||
- **Logs**: check the [Realtime logs](/dashboard/project/_/database/realtime-logs) inside your project Dashboard.
|
||||
- **WebSocket errors**: Use your browser's developer tools to find the WebSocket initiation request and view individual messages.
|
||||
|
||||
<Admonition type="tip" label="Realtime Inspector">
|
||||
|
||||
You can use the [Realtime Inspector](https://realtime.supabase.com/inspector/new) to reproduce an error and share those connection details with Supabase support.
|
||||
|
||||
</Admonition>
|
||||
Some quotas can cause a Channel join to be refused. Realtime will reply with one of the following WebSocket messages:
|
||||
|
||||
### `too_many_channels`
|
||||
|
||||
Too many channels currently joined for a single connection.
|
||||
|
||||
### `too_many_connections`
|
||||
|
||||
Too many total concurrent connections for a project.
|
||||
|
||||
### `too_many_joins`
|
||||
|
||||
Too many Channel joins per second.
|
||||
|
||||
### `tenant_events`
|
||||
|
||||
Connections will be disconnected if your project is generating too many messages per second. `supabase-js` will reconnect automatically when the message throughput decreases below your plan quota. An `event` is a WebSocket message delivered to, or sent from a client.
|
||||
|
||||
## Postgres changes payload quota
|
||||
|
||||
When this quota is reached, the `new` and `old` record payloads only include the fields with a value size of less than or equal to 64 bytes.
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: 'Vector Bucket Limits'
|
||||
subtitle: 'Understanding capacity, quotas, and billing for vector buckets.'
|
||||
subtitle: 'Understanding capacity, limits, and billing for vector buckets.'
|
||||
---
|
||||
|
||||
<Admonition type="caution" title="This feature is in alpha">
|
||||
|
||||
@@ -9,7 +9,7 @@ database_id = "4844905d-1456-44a1-858e-7a4995e5054c"
|
||||
|
||||
Disk IO refers to two metrics: throughput in Megabits per Second and IOPS which are Input/Output Operations per Second. Depending on the compute add-on of your instance you will have [different baseline performances](/docs/guides/platform/compute-add-ons#compute-size).
|
||||
|
||||
Smaller compute instances can burst and exceed their baseline performance for a short quota of time every day. This is represented as your Disk IO Budget and once your Disk IO Budget is consumed, your instance reverts back to its baseline performance. Learn more about [choosing the right compute instance for consistent disk performance](/docs/guides/platform/compute-add-ons#choosing-the-right-compute-instance-for-consistent-disk-performance).
|
||||
Smaller compute instances can burst and exceed their baseline performance for a short period of time every day. This is represented as your Disk IO Budget and once your Disk IO Budget is consumed, your instance reverts back to its baseline performance. Learn more about [choosing the right compute instance for consistent disk performance](/docs/guides/platform/compute-add-ons#choosing-the-right-compute-instance-for-consistent-disk-performance).
|
||||
|
||||
## Depleting your disk IO budget
|
||||
|
||||
|
||||
+1
-1
@@ -12,4 +12,4 @@ For example, if you have a chat application that uses Supabase Realtime and you
|
||||
|
||||
This quota applies to all Supabase projects, including self-hosted projects, but you can increase it depending on your use case. For hosted Supabase projects, select the plan that fits your Realtime usage and reach out if you need custom quotas. For those self-hosting Supabase, you can set those limits yourself by setting the `max_concurrent_users` field on the tenant record (see: https://supabase.com/docs/guides/self-hosting/realtime/config).
|
||||
|
||||
You can learn more about Realtime quotas here: https://supabase.com/docs/guides/realtime/quotas#quotas-by-plan
|
||||
You can learn more about Realtime limits here: https://supabase.com/docs/guides/realtime/limits#limits-by-plan
|
||||
@@ -334,8 +334,8 @@ export const USAGE_CATEGORIES: (subscription?: OrgSubscription) => CategoryMeta[
|
||||
chartDescription: 'The data refreshes every hour.',
|
||||
links: [
|
||||
{
|
||||
name: 'Realtime Quotas',
|
||||
url: `${DOCS_URL}/guides/realtime/quotas`,
|
||||
name: 'Realtime Limits',
|
||||
url: `${DOCS_URL}/guides/realtime/limits`,
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -353,8 +353,8 @@ export const USAGE_CATEGORIES: (subscription?: OrgSubscription) => CategoryMeta[
|
||||
chartDescription: 'The data refreshes every hour.',
|
||||
links: [
|
||||
{
|
||||
name: 'Realtime Quotas',
|
||||
url: `${DOCS_URL}/guides/realtime/quotas`,
|
||||
name: 'Realtime Limits',
|
||||
url: `${DOCS_URL}/guides/realtime/limits`,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -2176,7 +2176,12 @@ module.exports = [
|
||||
{
|
||||
permanent: true,
|
||||
source: '/docs/guides/realtime/rate-limits',
|
||||
destination: '/docs/guides/realtime/quotas',
|
||||
destination: '/docs/guides/realtime/limits',
|
||||
},
|
||||
{
|
||||
permanent: true,
|
||||
source: '/docs/guides/realtime/quotas',
|
||||
destination: '/docs/guides/realtime/limits',
|
||||
},
|
||||
{
|
||||
permanent: true,
|
||||
@@ -2206,7 +2211,7 @@ module.exports = [
|
||||
{
|
||||
permanent: true,
|
||||
source: '/docs/guides/realtime/guides/client-side-throttling',
|
||||
destination: '/docs/guides/realtime/quotas',
|
||||
destination: '/docs/guides/realtime/limits',
|
||||
},
|
||||
{
|
||||
permanent: true,
|
||||
|
||||
Reference in new issue
Block a user