Running into limits can cause unexpected failures. Knowing the limits of Temporal can prevent that.
This page details many of the errors and warnings coded into the Temporal Platform. Errors are hard limits that fail when reached. Warnings are soft limits that produce a warning log on the server side.
- Identifiers: By default, the maximum length for identifiers (such as Workflow Id, Workflow Type, and Task Queue name) is 1000 characters.
- This is configurable with the
limit.maxIDLength
dynamic config variable, set to 255 in this SQL example. - The character format is UTF-8.
- This is configurable with the
- gRPC: gRPC has a limit of 4 MB for each message received.
- Event batch size: The
DefaultTransactionSizeLimit
limit is 4 MB. This is the largest transaction size allowed for the persistence of Event Histories. - Blob size limit for Payloads (including Workflow context and each Workflow and Activity argument and return value; source):
- Temporal warns at 256 KB: Blob size exceeds limit.
- Temporal errors at 2 MB:
ErrBlobSizeExceedsLimit: Blob data size exceeds limit.
- This is configurable with BlobSizeLimitError and BlobSizeLimitWarn, if you know what you are doing.
- History total size limit (leading to a terminated Workflow Execution):
- Temporal warns at 10 MB:
history size exceeds warn limit
. - Temporal errors at 50 MB: history size exceeds error limit.
- This is configurable with HistorySizeLimitError and HistorySizeLimitWarn, if you know what you are doing.
- Temporal warns at 10 MB:
- History total count limit (leading to a terminated Workflow Execution):
- Temporal warns after 10,240 Events:
history size exceeds warn limit
. - Temporal errors after 51,200 Events: history size exceeds error limit.
- This is configurable with HistoryCountLimitError and HistoryCountLimitWarn, if you know what you are doing.
- Temporal warns after 10,240 Events:
- Concurrent Action limit
- We fail the following action Commands on Temporal Cloud if the concurrent running count exceeds 2,000:
ScheduleActivityTask
SignalExternalWorkflowExecution
RequestCancelExternalWorkflowExecution
StartChildWorkflowExecution
- The open source Temporal Cluster has a default limit of 50,000 pending Activities, Child Workflows, Signals, or Workflow cancellation requests, but you can override the limits in the dynamic configuration using these variables:
limit.numPendingActivities.error
limit.numPendingSignals.error
limit.numPendingCancelRequests.error
limit.numPendingChildExecutions.error
- We fail the following action Commands on Temporal Cloud if the concurrent running count exceeds 2,000:
- Custom Search Attributes limits
For details on dynamic configuration keys, see Dynamic configuration reference.
Default limits for Temporal Cloud
The Temporal Cloud service sets default limits for the following aspects:
- Account level
- Users: 100
- Namespaces: 10
- Prometheus endpoint Retention Period: 1 month
- Namespace level
- Actions per second: 200 (with spikes to 400)
- Certificates: 32-KB payload or 16 certificates, whichever is smaller
- Concurrent Task pollers: 2,000 (configurable; maximum of 100,000)
- Custom Search Attributes (maximum per type)
- bool: 20
- double: 20
- datetime: 20
- int: 20
- keyword: 20
- text: 5
- Retention Period: 30 days (configurable; range of 1—90 days)
- Number of Signals received per Workflow Execution: 10,000
- List Filters
- The ORDER BY operator isn't supported in List Filters in Temporal Cloud. This means that you can't apply custom ordering of Workflows with Cloud Visibility features. Lists of Workflows are still ordered by a default ordering rule. Be aware that this rule might change.