

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

# 针对 Amazon SQS 中的 FIFO 节流问题进行排查
<a name="troubleshooting-fifo-throttling-issues"></a>

默认情况下，FIFO 队列支持每个 API 操作（[https://docs.amazonaws.cn/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.amazonaws.cn/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)、[https://docs.amazonaws.cn/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html](https://docs.amazonaws.cn/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html) 和 [https://docs.amazonaws.cn/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html](https://docs.amazonaws.cn/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html)）每秒 300 个事务。即使队列中有可用消息，请求超过每秒 300 个事务也会触发 `ThrottlingException` 错误。您可以使用以下方法来缓解这一问题：
+ [为 Amazon SQS 中的 FIFO 队列启用高吞吐量](enable-high-throughput-fifo.md).
+ 使用 Amazon SQS API 批量操作 `SendMessageBatch`、`DeleteMessageBatch` 和 `ChangeMessageVisibilityBatch`，将每个 API 操作的 TPS 上限提高到每秒最多 3000 条消息，同时降低成本。对于 `ReceiveMessage` API，设置 `MaxNumberofMessages` 参数，以便在每个事务中最多接收 10 条消息。有关更多信息，请参阅 [Amazon SQS 批处理操作](sqs-batch-api-actions.md)。
+ 对于具有高吞吐量的 FIFO 队列，请按照建议[优化分区利用率](high-throughput-fifo.md#data-distribution-partition-limitations)。批量发送具有相同消息组 IDs 的消息。使用来自同一 `ReceiveMessage` API 请求的接收句柄批量删除消息或更改消息可见性超时值。
+ 增加唯一 [https://docs.amazonaws.cn/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html#SQS-SendMessage-request-MessageGroupId](https://docs.amazonaws.cn/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html#SQS-SendMessage-request-MessageGroupId) 值的数量。这有助于在 FIFO 队列分区之间实现均匀分配。有关更多信息，请参阅“Using the Amazon SQS message group ID”。

有关更多信息，请参阅《Amazon Knowledge Center 指南》**中的[“为什么我的 Amazon SQS FIFO 队列没有返回所有消息或其他消息组中的消息？”](https://repost.aws/knowledge-center/sqs-fifo-messages-not-returned)。