HTTP 503 状态代码(服务不可用) - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

HTTP 503 状态代码(服务不可用)

HTTP 503 状态代码(服务不可用)通常表示源服务器存在性能问题。在极少数情况下,该代码表示由于边缘站点中的资源限制,CloudFront 暂时无法满足请求。

如果您使用的是 Lambda@Edge 或 CloudFront Functions,则问题可能是执行错误或超出 Lambda@Edge 限制错误。

源服务器没有足够容量来支持请求速率

当原始服务器不可用或无法处理传入请求时,将返回 HTTP 503 状态代码(服务不可用)。然后,CloudFront 会将错误返回给用户。要解决该问题,请尝试以下解决方案:

  • 如果您使用 Amazon S3 作为原始服务器

    • 对于每个分区的 Amazon S3 前缀,您可以每秒执行至少 3500 个 PUT/COPY/POST/DELETE 请求或 5500 个 GET/HEAD 请求。当 Amazon S3 返回 503 减速响应时,这通常表示针对特定 Amazon S3 前缀的请求速率过高。

      由于请求速率针对的是 S3 存储桶中的各个前缀,因此应将对象分布在多个前缀中。随着前缀上的请求速率逐渐提高,Amazon S3 会纵向扩展以分别处理每个前缀的请求。因此,存储桶所处理的总请求速率是前缀数量的倍数。

    • 有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的性能 Amazon S3 优化

  • 如果您为原始服务器使用弹性负载均衡,则

    • 确保您的后端实例可以响应运行状况检查。

    • 确保您的负载均衡器和后端实例可以处理负载。

    有关更多信息,请参阅:

  • 使用自定义源时

    • 请检查应用程序日志,以确保您的源具有足够资源,如内存、CPU 和磁盘大小。

    • 如果使用 Amazon EC2 作为后端,请确保实例类型具有适当的资源来满足传入请求。有关更多信息,请参阅《Amazon EC2 用户指南》中的实例类型

  • 使用 API Gateway 时

    • 在 API Gateway API 无法接收响应时,此错误与后端集成有关。后端服务器可能:

      • 负载已超出容量,无法处理新的客户端请求。

      • 正在进行临时维护。

    • 要解决此错误,请查看您的 API Gateway 应用程序日志,以确定后端容量、集成或其他方面是否存在问题。

由于边缘站点中的资源限制,CloudFront 导致发生错误

在极少数情况下,CloudFront 无法将请求路由到下一个可用的最佳边缘站点并因此无法满足请求,此时您将收到此错误。当您对 CloudFront 分配执行负载测试时,此错误很常见。为帮助防止发生此情况,请遵循对 CloudFront 进行负载测试 指南,以避免 503(超出容量)错误。

如果在生产环境中发生这种情况,请联系 Amazon Web Services Support

Lambda@Edge 或 CloudFront Function 执行错误

如果您使用的是 Lambda@Edge 或 CloudFront Functions,则 HTTP 503 状态代码可能指示您的函数返回了执行错误。

有关如何识别和解决 Lambda@Edge 错误的详细信息,请参阅测试和调试 Lambda@Edge 函数

有关对 CloudFront Functions 进行测试的更多信息,请参阅测试函数

Lambda@Edge 超出限制

如果您使用的是 Lambda@Edge,则 HTTP 503 状态代码可能表明 Lambda 返回了错误。此错误可能是由于下列原因之一导致的:

  • 函数执行数量超过了 Lambda 为限制 Amazon Web Services 区域中的执行数量而设置的配额之一(并发执行或调用频率)。

  • 函数超出了 Lambda 函数超时配额。

有关 Lambda@Edge 配额的更多信息,请参阅 有关 Lambda@Edge 的配额。有关如何识别和解决 Lambda@Edge 错误的详细信息,请参阅测试和调试 Lambda@Edge 函数。您还可以查看《Amazon Lambda 开发人员指南》中的 Lambda 服务配额