我如何在 Amazon EMR 中运行监控脚本时防止发生“超出速率”ThrottlingException 错误?

1 分钟阅读
0

为了监控我的 Amazon EMR 集群,我运行了将调用 API 的脚本。脚本会返回类似于以下内容的错误: “超出速率(服务:AmazonElasticMapReduce;状态代码:400;错误代码:ThrottlingException;请求 ID:e2b6191c-gkl5-269r-u735-cryyz251a837)” 如何防止“超出速率”错误?

简短描述

Amazon EMR 会限制 API 调用以确保系统稳定。限制异常通常会在您定期运行监控脚本以检查群集中的参数时发生。举个例子,每 60 秒调用一次 DescribeCluster 以检查集群是否已达到“等待”状态。您的集群越多,运行的监控脚本越多,发生限制错误的可能性就越高。

解决方法

如要防止出现限制错误,请执行如下操作:

  • 减少 API 调用的频率。
  • 打散 API 调用的间隔时间,不要让它们全部都同时运行。
  • 在进行 API 调用时执行指数退避
  • 考虑迁移到基于事件的架构

要了解限制错误的来源,请使用 AWS CloudTrail 来跟踪事件历史记录CloudTrail 可以帮助识别事件详细信息,如下所示:

  • 频繁的 API 调用
  • “超出速率“错误及其相关的 API 调用
  • API 调用是由用户触发还是由自动化触发

相关信息

常见错误

管理和监控工作负载中的 API 节流

CloudTrail 的工作原理

AWS 官方
AWS 官方已更新 1 年前