Amazon SWF 限额 - Amazon Simple Workflow Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon SWF 限额

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

Amazon SWF 的一般账户限额

  • 最大注册域数 – 100

    此限额包括已注册和已弃用的域。

  • 最大工作流和活动类型数 – 每个域 10,000 个

    此限额包括已注册和已弃用的类型。

  • API 调用限额 – 除了少见的峰值外,如果应用程序在很短时间内调用了大量 API,也可能会被节流。

  • 最大请求大小 – 每个请求 1MB

    这是每个 Amazon SWF API 请求的数据大小,包括请求标头以及所有其他关联的请求数据。

  • 计数 API 的截断响应 – 指示达到了内部限额,响应不是完整计数。

    在返回完整响应之前,某些查询将达到上述 1 MB 的内部限额。以下 API 可以返回截断的响应,而不是完整的计数。

    对于上述每一个 API,如果 truncated 响应设置为 true,计数将小于完整数量。此内部限额无法提高。

  • 最大标签数 – 每个资源 50 个标签。

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

工作流执行限额

  • 最大已开启工作流执行数 – 每个域 100000 个

    此计数包括子工作流执行。

  • 最长工作流执行时间 – 1 年 这是硬性限额,无法更改。

  • 最大工作流执行历史记录数 – 25000 个事件 这是硬性限额,无法更改。

    最佳实践是使构造的每个工作流的历史记录不会增长到超过 10000 个事件。因为决策程序必须获取工作流历史记录,所以,历史记录较小时,决策程序能够更快地完成决策。如果使用了 Flow Framework,则可以使用 ContinueAsNew 以全新历史记录继续工作流程。

  • 开启的子工作流执行的最大数量 – 每个工作流执行 1000 个

  • 工作流执行空闲时间限额 – 1 年(受工作流执行时间限制)

    您可以配置工作流程超时,以便在工作流程特定阶段耗时太长时引发超时事件。

  • 工作流保留时间限额 – 90 天

    此时间过后,无法再检索或查看工作流程历史。对 Amazon SWF 保留的已关闭工作流程执行数没有进一步的限制。

如果您的使用案例需要超出这些限额,您可以使用 Amazon SWF 提供的功能继续执行,并使用子工作流执行来构建应用程序。如果您发现仍需要提高限额,请参阅 请求增加配额

任务执行限额

  • 每个任务列表最大轮询数 – 每个任务列表 1000 个

    同时最多可有 1000 个轮询程序对一个特定任务列表进行轮询。如果超过 1000,会引发 LimitExceededException

    注意

    虽然最大限额是 1000,但您可能会在达到此限额之前就遇到 LimitExceededException 错误。此错误并不意味着任务被延迟。相反,这意味着您在任务列表中拥有最大数量的闲置轮询器。Amazon SWF 设置此限额是为了节省客户端和服务器端的资源。设置限制可以防止过多轮询器进行不必要的等待。您可以使用多个任务列表分配轮询,以减少 LimitExceededException 错误。

  • 每秒安排的最大任务数 – 每个任务列表 2000 个

    在特定任务列表中,您每秒最多可安排 2000 个任务。如果超过 2000,您的 ScheduleActivityTask 决策将因 ACTIVITY_CREATION_RATE_EXCEEDED 错误而失败。

    注意

    虽然最大限额是 2000,但您可能会在达到此限额之前就遇到 ACTIVITY_CREATION_RATE_EXCEEDED 错误。要减少这些错误,您可以使用多个任务列表来分配负载。

  • 最长任务执行时间 – 1 年(受工作流最长执行时间限制)

    可以配置活动超时,以便在活动任务执行的特定阶段耗时太长时引发超时事件。

  • SWF 在队列中保留任务的最长时间 – 1 年(受工作流执行时间限额限制)

    可以配置活动注册过程中的默认活动超时,以便在活动任务执行的特定阶段耗时太长时引发超时事件。还可以在决策程序代码中排定活动任务时,覆盖默认活动超时。

  • 最大已开启活动任务数 – 每个工作流执行 1000 个。

    此限额包括已安排的活动任务和工作线程正在处理的活动任务。

  • 最大已开启定时器数 – 每个工作流执行 1000 个

  • 最大输入/结果数据大小 – 32768 个字符

    此限额会影响活动或工作流执行结果数据、安排活动任务或工作流执行时的输入数据,以及使用工作流执行信号发送的输入。

  • 决策任务响应中的最大决策数 – 变化

    由于最大 API 请求大小有 1MB 的限额,因此单次调用 RespondDecisionTaskCompleted 所返回的决策数量将根据每个决策所使用的数据大小(包括提供给安排活动任务或工作流执行的任何输入数据的大小)而受到限制。

Amazon SWF 节流限额

除了上述服务限额外,某些 Amazon SWF API 调用和决策事件海会使用令牌存储桶方案进行节流,以保持服务带宽。如果请求速率持续超出此处列出的速率,您可以请求提高节流限额

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

所有区域的节流限额

以下限额适用于个人账户。此外,您也不能请求提高以下限额。有关此操作的信息,请参阅 请求增加配额

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

所有区域的决策限额

以下限额适用于个人账户。此外,您也不能请求提高以下限额。有关此操作的信息,请参阅 请求增加配额

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

工作流级别限额

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

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

请求增加配额

使用 Amazon Web Services Management Console中的支持中心页面申请提高 所有区域的节流限额所有区域的决策限额 的限额。有关更多信息,请参阅《Amazon Web Services 一般参考》中的 To Request a Quota Increase