在向 Amazon Simple Storage Service (Amazon S3) 发出请求时,Amazon S3 返回一个与下列消息之一类似的回复:

AmazonS3Exception: Internal Error (Service: Amazon S3; Status Code: 500; Error Code: 500 Internal Error; Request ID: A4DBBEXAMPLE2C4D)
AmazonS3Exception: Slow Down (Service: Amazon S3; Status Code: 503; Error Code: 503 Slow Down; Request ID: A4DBBEXAMPLE2C4D)

如何纠正这些错误?

错误代码 500 内部错误指示 Amazon S3 此时无法处理请求。错误代码 503 速度变慢通常指示向 S3 存储桶发出的请求的速率非常快,超出了请求速率和性能指南中描述的请求速率。

由于 Amazon S3 是一种分布式服务,因此,在正常使用该服务时,预计会出现极小比例的 5xx 错误。所有从 Amazon S3 返回 5xx 错误的请求都可以并且应该重试,因此我们建议向 Amazon S3 发出请求的应用程序具有容错机制来从这些错误中恢复。

要纠正或避免 5xx 错误,请尝试以下解决方案:

  • 在发出请求的应用程序中启用重试机制
  • 配置应用程序以逐步提高请求速率
  • 跨多个前缀分发对象

在发出请求的应用程序中启用重试机制

由于 Amazon S3 的分布式特性,可以对返回 500 或 503 错误的请求进行重试。最佳实践是将重试逻辑构建到向 Amazon S3 发出请求的应用程序中。我们建议您将应用程序的重试计数设置为 10。

所有 AWS 开发工具包都有一个内置的重试机制,其算法使用指数回退。对于连续错误响应,这种算法实现的等待时间越来越长。大多数指数回退算法会利用抖动 (随机延迟) 来防止连续的冲突。有关更多信息,请参阅 AWS 中的错误重试和指数回退

配置应用程序以逐步提高请求速率

为了避免 503 速度变慢错误,请尝试配置您的应用程序,使其以较低的请求速率(每秒事务数)开始。然后,以指数方式提高应用程序的请求速率。Amazon S3 会自动扩展以处理更高的请求速率。

跨多个前缀分发对象

请求速率和性能指南中描述的请求速率根据 S3 存储桶中的前缀应用。要设置存储桶以处理更高的请求速率并避免 503 速度变慢错误,您可以跨多个前缀分发对象。例如,如果您正在使用 S3 存储桶存储图像和视频,则可以将文件分发到与以下内容类似的两个前缀中:

  • mybucket/images
  • mybucket/videos

如果前缀的请求速率逐渐增加,Amazon S3 就会扩展以处理这两个前缀的请求(每秒 3500 个 PUT/POST/DELETE 或 5500 个 GET 请求),因此,存储桶处理的总体请求速率会加倍。


此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2018 年 9 月 18 日