

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon SWF 限额
<a name="swf-dg-limits"></a>

Amazon SWF 为某些工作流参数的大小设置了限额，例如每个账户的域数量和工作流执行历史记录的大小。这些限额旨在防止错误的工作流消耗系统的所有资源，但并不是硬性限制。如果发现自己的应用程序经常超出这些限额，您可以申请提高服务限额。

**Contents**
+ [Amazon SWF 的一般账户限额](#swf-dg-limits-general)
+ [工作流执行限额](#swf-dg-limits-workflow-executions)
+ [任务执行限额](#swf-dg-limits-tasks)
+ [Amazon SWF 节流限额](#swf-throttling-limits)
  + [所有区域的节流限额](#throttle-limits-all-regions)
  + [所有区域的决策限额](#decision-quota-limits-all-regions)
  + [工作流级别限额](#wf-wflow-level-quotas)
+ [请求提高限额](#swf-dg-limits-how-to-increase)

## Amazon SWF 的一般账户限额
<a name="swf-dg-limits-general"></a>
+ **最大注册域数** – 100

  此限额包括已注册和已弃用的域。
+ **最大工作流和活动类型数** – 每个域 10,000 个

  此限额包括已注册和已弃用的类型。
+ **API 调用限额** – 除了少见的峰值外，如果应用程序在很短时间内调用了大量 API，也可能会被节流。
+ **最大请求大小** – 每个请求 1MB

  这是每个 Amazon SWF API 请求的*总*数据大小，包括请求标头以及所有其他关联的请求数据。
+ C@@ ***ount 的响应被截断 APIs — 表示已达到内部配额且响应未达到全部计数***。

   在返回完整响应之前，某些查询将达到上述 1 MB 的内部限额。以下 API 可以返回截断的响应，而不是完整的计数。
  + [CountClosedWorkflowExecutions](https://docs.amazonaws.cn/amazonswf/latest/apireference/API_CountClosedWorkflowExecutions.html)
  + [CountOpenWorkflowExecutions](https://docs.amazonaws.cn/amazonswf/latest/apireference/API_CountOpenWorkflowExecutions.html)
  + [CountPendingActivityTasks](https://docs.amazonaws.cn/amazonswf/latest/apireference/API_CountPendingActivityTasks.html)
  + [CountPendingDecisionTasks](https://docs.amazonaws.cn/amazonswf/latest/apireference/API_CountPendingDecisionTasks.html)

  对于上述每一个 API，如果 `truncated` 响应设置为 true，计数将小于完整数量。此内部限额无法提高。
+ **最大标签数** – 每个资源 50 个标签。

  尝试添加超过 50 个标签会引发 400 错误 `TooManyTagsFault`。

## 工作流执行限额
<a name="swf-dg-limits-workflow-executions"></a>
+ **最大已开启工作流执行数** – 每个域 100000 个

  此计数包括子工作流执行。
+ **最长工作流执行时间** – 1 年 这是硬性限额，无法更改。
+ **最大工作流执行历史记录数** – 25000 个事件 这是硬性限额，无法更改。

  最佳实践是使构造的每个工作流的历史记录不会增长到超过 10000 个事件。由于决策者必须获取工作流程历史记录，因此较小的历史记录可以让决策者更快地完成任务。如果使用 [Flow Fram](resources.md#aws-flow-framework-documentation) ework，则可以使用 ContinueAsNew 以全新的历史记录继续工作流程。
+ **开启的子工作流执行的最大数量** – 每个工作流执行 1000 个

如果您的使用案例需要超出这些限额，您可以使用 Amazon SWF 提供的功能继续执行，并使用[子工作流](swf-dev-adv-child-workflows.md)执行来构建应用程序。如果您发现仍需要提高限额，请参阅 [请求提高限额](#swf-dg-limits-how-to-increase)。

## 任务执行限额
<a name="swf-dg-limits-tasks"></a>
+ **每个任务列表最大轮询数** – 每个任务列表 1000 个

  同时最多可有 1000 个轮询程序对一个特定任务列表进行轮询。如果超过 1000，会引发 `LimitExceededException`。
**注意**  
虽然最大限额是 1000，但您可能会在达到此限额之前就遇到 `LimitExceededException` 错误。此错误并不意味着任务被延迟。相反，这意味着您在任务列表中拥有最大数量的闲置轮询器。Amazon SWF 设置此限额是为了节省客户端和服务器端的资源。设置限制可以防止过多轮询器进行不必要的等待。您可以使用多个任务列表分配轮询，以减少 `LimitExceededException` 错误。
+ 每秒安排的最大任务数 – 每个任务列表 2000 个

   在特定任务列表中，您每秒最多可安排 2000 个任务。如果超过 2000，您的 `ScheduleActivityTask` 决策将因 `ACTIVITY_CREATION_RATE_EXCEEDED` 错误而失败。
**注意**  
虽然最大限额是 2000，但您可能会在达到此限额之前就遇到 `ACTIVITY_CREATION_RATE_EXCEEDED` 错误。要减少这些错误，您可以使用多个任务列表来分配负载。
+ **最长任务执行时间** – 1 年（受工作流最长执行时间限制）

  可以配置[活动超时](swf-timeout-types.md)，以便在[活动任务](swf-dev-tasks.md)执行的特定阶段耗时太长时引发超时事件。
+ **SWF 在队列中保留任务的最长时间** – 1 年（受工作流执行时间限额限制）

  可以配置活动注册过程中的默认[活动超时](swf-timeout-types.md)，以便在[活动任务](swf-dev-tasks.md)执行的特定阶段耗时太长时引发超时事件。还可以在决策程序代码中排定活动任务时，覆盖默认活动超时。
+ **最大已开启活动任务数** – 每个工作流执行 1000 个。

  此限额包括已安排的活动任务和工作线程正在处理的活动任务。
+ **最大已开启定时器数** – 每个工作流执行 1000 个
+ **最大 input/result 数据大小** — 32,768 个字符

  此限额会影响活动或工作流执行结果数据、安排活动任务或工作流执行时的输入数据，以及使用[工作流执行信号](swf-dev-adv-signals.md)发送的输入。
+ **决策任务响应中的最大决策数** – 变化

  由于[最大 API 请求大小](#swf-dg-limits-general)有 1MB 的限额，因此单次调用 `[RespondDecisionTaskCompleted](https://docs.amazonaws.cn/amazonswf/latest/apireference/API_RespondDecisionTaskCompleted.html)` 所返回的决策数量将根据每个决策所使用的数据大小（包括提供给安排活动任务或工作流执行的任何输入数据的大小）而受到限制。

## Amazon SWF 节流限额
<a name="swf-throttling-limits"></a>

除了上述服务限额外，某些 Amazon SWF API 调用和决策事件海会使用[令牌存储桶](https://en.wikipedia.org/wiki/Token_bucket)方案进行节流，以保持服务带宽。如果请求速率持续超出此处列出的速率，您可以[请求提高节流限额](#swf-dg-limits-how-to-increase)。

所有区域的节流和决策限额都是相同的。

### 所有区域的节流限额
<a name="throttle-limits-all-regions"></a>

以下限额适用于个人账户。此外，您也不能请求提高以下限额。有关此操作的信息，请参阅 [请求提高限额](#swf-dg-limits-how-to-increase)。


| API 名称 | 桶大小 | 每秒的重填速率 | 
| --- | --- | --- | 
|  CountClosedWorkflowExecutions  | 2000 | 6 | 
|  CountOpenWorkflowExecutions  | 2000 | 6 | 
|  CountPendingActivityTasks  | 200 | 6 | 
|  CountPendingDecisionTasks  | 200 | 6 | 
|  DeleteActivityType  | 200 | 6 | 
|  DeleteWorkflowType  | 200 | 6 | 
|  DeprecateActivityType  | 200 | 6 | 
|  DeprecateDomain  | 100 | 6 | 
|  DeprecateWorkflowType  | 200 | 6 | 
|  DescribeActivityType  | 2000 | 6 | 
|  DescribeDomain  | 200 | 6 | 
|  DescribeWorkflowExecution  | 2000 | 6 | 
|  DescribeWorkflowType  | 2000 | 6 | 
|  GetWorkflowExecutionHistory  | 2000 | 60 | 
|  ListActivityTypes  | 200 | 6 | 
|  ListClosedWorkflowExecutions  | 200 | 6 | 
|  ListDomains  | 100 | 6 | 
|  ListOpenWorkflowExecutions  | 200 | 48 | 
|  ListTagsForResource  | 50 | 30 | 
|  ListWorkflowTypes  | 200 | 6 | 
|  PollForActivityTask  | 2000 | 200 | 
|  PollForDecisionTask  | 2000 | 200 | 
|  RecordActivityTaskHeartbeat  | 2000 | 160 | 
|  RegisterActivityType  | 200 | 60 | 
|  RegisterDomain  | 100 | 6 | 
|  RegisterWorkflowType  | 200 | 60 | 
|  RequestCancelWorkflowExecution  | 2000 | 30 | 
|  RespondActivityTaskCanceled  | 2000 | 200 | 
|  RespondActivityTaskCompleted  | 2000 | 200 | 
|  RespondActivityTaskFailed  | 2000 | 200 | 
|  RespondDecisionTaskCompleted  | 2000 | 200 | 
|  SignalWorkflowExecution  | 2000 | 30 | 
|  StartWorkflowExecution  | 2000 | 200 | 
|  TagResource  | 50 | 30 | 
|  TerminateWorkflowExecution  | 2000 | 60 | 
|  UndeprecateActivityType  | 200 | 6 | 
|  UndeprecateDomain  | 100 | 6 | 
|  UndeprecateWorkflowType  | 200 | 6 | 
|  UntagResource  | 50 | 30 | 

### 所有区域的决策限额
<a name="decision-quota-limits-all-regions"></a>

以下限额适用于个人账户。此外，您也不能请求提高以下限额。有关此操作的信息，请参阅 [请求提高限额](#swf-dg-limits-how-to-increase)。


| API 名称 | 桶大小 | 每秒的重填速率 | 
| --- | --- | --- | 
| RequestCancelExternalWorkflowExecution | 1200 | 120 | 
| ScheduleActivityTask | 1000 | 200 | 
| SignalExternalWorkflowExecution | 1200 | 120 | 
| StartChildWorkflowExecution | 500 | 12 | 
| StartTimer | 2000 | 200 | 

### 工作流级别限额
<a name="wf-wflow-level-quotas"></a>

以下限额适用于工作流级别，不可提高。


| API 名称 | 桶大小 | 每秒的重填速率 | 
| --- | --- | --- | 
| GetWorkflowExecutionHistory | 400 | 200 | 
| SignalWorkflowExecution | 1000 | 1000 | 
| RecordActivityTaskHeartbeat | 1000 | 1000 | 
| RequestCancelWorkflowExecution | 200 | 200 | 

## 请求提高限额
<a name="swf-dg-limits-how-to-increase"></a>

有关更多信息，请参阅 *Amazon Web Services 一般参考* 中的 [Amazon 服务限额](https://docs.amazonaws.cn/general/latest/gr/aws_service_limits.html)。