为了避免服务级别下的 Amazon S3 节流,您可以监控使用情况并调整服务限额,也可以使用分区等特定方法。下面是一些可能导致节流的一些情况:
-
超过账户的 API 请求限制 - Amazon S3 具有基于账户类型和使用情况的默认 API 请求限制。如果超过单个前缀每秒的最大请求数,则可能会对您的请求进行节流,以防 Amazon S3 服务过载。
-
数据分区不足 - 如果您没有正确分区数据并传输大量数据,Amazon S3 可能会对您的请求进行节流。有关分区的更多信息,请参阅本文档中的 使用分区 节。
-
大量小对象 - 如有可能,避免生成大量小文件。Amazon S3 的每个分区前缀每秒最多 5500 个 GET 请求,您的 Athena 查询也具有同样的限制。如果您需要在单一查询中扫描数百万个小对象,则 Amazon S3 可能会对您的查询进行节流。
要避免过度扫描,可使用 AWS Glue ETL 定期压缩文件,或者对表进行分区并添加分区键筛选条件。有关详细信息,请参阅以下资源:
-
如何配置 AWS Glue ETL 作业以输出较大的文件?
(AWS 知识中心) -
以较大的组读取输入文件(《AWS Glue 开发人员指南》)