503 服务不可用 - 后端服务器

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

视频

请观看以下视频,详细了解如何解决 503 服务不可用错误。

视频 说明
<ph type="x-smartling-placeholder"></ph> 后端服务器发出的 503 服务不可用错误 了解以下内容: <ph type="x-smartling-placeholder">
    </ph>
  • Apigee Edge 中的 503 服务不可用错误简介
  • 排查和解决实时 503 Service Unavailable from 问题 后端服务器

问题

客户端应用收到 HTTP 响应状态 503,后跟 Service Unavailable 消息 API 代理调用。

错误消息

您会看到以下某条错误消息:

HTTP/1.1 503 Service Unavailable
HTTP/1.1 503 Service Unavailable: Back-end server is at capacity

您可能还会看到如下所示的错误消息 在 HTTP 响应中:

The server is temporarily unable to service your request due to
maintenance downtime or capacity problems. Please try again later.

注意:上述响应代码和错误消息仅为示例。 在某些情况下,您可能只会收到错误响应代码,而不会收到任何错误消息。 错误响应代码和错误消息的格式和内容可能会因 后端服务器实现

病因

HTTP 状态代码 503 表示服务器目前无法处理传入的 请求。出现此错误通常是因为服务器太忙或 它们会暂时关停以进行维护

出现 503 Service Unavailable 响应的可能原因包括:

原因 说明 谁可以执行问题排查步骤
过载的服务器 后端服务器过载或超出其容量,无法处理任何新的 传入的客户端请求 Edge 公有云和私有云用户
服务器正在维护 后端服务器可能暂时正在进行维护。 Edge 公有云和私有云用户

原因:服务器/服务器过载,正在维护

在 Apigee Edge 中,后端服务器可能会返回 503 服务不可用错误 在以下任一情况下会发生以下情况:

  • 后端服务器过载/繁忙,无法处理任何新请求。
  • 后端服务器由于维护而暂时关闭。

诊断

您可以使用以下三种方法中的任何一种来诊断错误:

  • 跟踪工具
  • NGINX 访问日志
  • 直接调用后端服务器

点击下面的标签了解每种方法。

跟踪工具

  1. 启用跟踪会话, 并进行 API 调用以重现问题“503 Service Unavailable”(503 服务不可用)。
  2. 选择其中一个失败请求并检查跟踪记录。
  3. 浏览跟踪记录的各个阶段,并找到失败的位置。
  4. 如果您发现目标服务器返回的 503 错误是响应, 导致 503 错误的原因在于目标服务器

    下面是显示收到 503 服务不可用响应的跟踪记录屏幕截图示例 从目标服务器:

  5. 点击从目标服务器收到的响应阶段,并完成 响应标头和响应内容部分,看看其中是否包含任何有用信息: <ph type="x-smartling-placeholder">
      </ph>
    • 响应标头可能包含服务器标头, 错误响应的发送来源。
    • 响应内容可能包含额外信息 目标服务器发送了 503 响应代码。
  6. 检查 503 错误是否来自目标服务器,确认 AXX-Apigee-fault-sourceX-Apigee-fault-code 的值 (记录的 Google Analytics 数据)按照下面给出的步骤在跟踪记录中所处的阶段: <ph type="x-smartling-placeholder">
      </ph>
    1. 点击 AX(记录的 Google Analytics 数据)阶段,如以下屏幕截图所示:
    2. 向下滚动“阶段详情”到“响应标头”部分,并确定值 X-Apigee-fault-codeX-Apigee-fault-source 的部分,如下所示:
    3. 如果 X-Apigee-fault-sourceX-Apigee-fault-code 的值与值一致 您可以确认 503 错误是否来自 目标服务器:
      响应标头
      X-Apigee-fault-source 目标
      X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  7. 检查是否使用了代理链,即目标服务器/目标端点是否 在 Apigee 中调用另一个代理要确定这一点,请执行以下操作: <ph type="x-smartling-placeholder">
      </ph>
    1. 返回请求已发送到目标服务器阶段,然后 点击 Show Curl 按钮并确定目标服务器主机别名。
    2. 如果目标服务器主机别名指向虚拟主机别名,则其为 代理链在这种情况下,您需要对链式 直到确定 503 服务不可用错误的实际原因为止。 在这些情况下, 这些阶段可通过 本指南
    3. 如果目标服务器主机别名指向您的后端服务器,请转到 解决方法

NGINX 访问日志

您还可以参阅 NGINX 访问日志,确定 503 状态代码是否已发送。 由后端服务器发出如果相关问题曾发生过,则此功能会特别有用 或者,问题是间歇性的,并且您无法在界面中捕获跟踪记录。 请按照以下步骤从 NGINX 访问日志中确定此信息:

  1. 查看 NGINX 访问日志。
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  2. 搜索特定 API 代理在特定时间段内出现的任何 503 错误 (如果问题在过去发生过)或任何仍失败且返回 503 的请求。
  3. 如果存在任何 503 错误,请检查错误是否来自后端服务器。 如果 X-Apigee-fault-sourceX-Apigee-fault-code 的值与 已显示的值 在下表中,503 错误来自后端服务器:
    响应标头
    X-Apigee-fault-source 目标
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode

    以下条目示例显示了由目标服务器引起的 503 错误:

  4. 查看特定的 API 代理,确保您使用的是 代理链,即 如果 目标服务器/目标端点未在 Apigee 中调用其他代理。如果您使用的是 代理链时,您需要对链式代理重复上述所有步骤, 您可以确定导致 503 服务不可用错误的实际原因。在这些情况下 “503 Service Unavailable”(服务不可用)也可能会在其他阶段出现在其他链式代理中, 您可以使用本指南进行诊断。
  5. 如果您确认自己没有使用代理链接,并且 503 错误来自 然后前往解决

调用后端服务器

您可以直接调用后端服务器,验证是否获得了相同的 通过 Apigee Edge 发出请求时收到的 503 服务不可用响应。

  1. 确保您拥有所有必需的标头、查询参数和 需要作为请求的一部分传递给后端服务器
  2. 如果后端服务可公开访问,那么您可以使用 curl 命令 Postman 或任何其他 REST 客户端,并直接调用后端服务器 API。
  3. 如果只能从消息处理器访问后端服务器,您可以使用 curl 命令、Postman 或任何其他 REST 客户端,并直接调用后端服务器 API 从消息处理器中移除
  4. 验证后端服务确实会返回 503 服务不可用错误。

分辨率

如果确定 503 错误来自后端服务器,您可以执行 以解决此问题:

  • 如果问题是由于后端服务器停机维护而导致的, 你可以在维护期结束后让后端服务器联机。
  • 如果问题是由后端服务器过载引起的,那么 如果您有权访问后端服务器,请解决此问题。其他情况 您可能需要与后端服务器团队合作来解决此问题。

使用 API 监控来诊断问题

API Monitoring 可帮助您将 快速诊断错误、性能 以及延迟问题及其来源,例如开发者应用、API 代理、后端目标 或 API 平台

逐步浏览示例 场景,该示例演示了如何排查 API 的 5xx 问题 使用 API 监控例如,您可以设置提醒 Messaging.adaptors.http.flow.ErrorResponseCode 错误数超过特定阈值。

必须收集的诊断信息

如果在按照上述说明操作后问题仍然存在,请收集 以下诊断信息,然后联系 Apigee 支持

如果您是公有云用户,请提供以下信息:

  • 组织名称
  • 环境名称
  • API 代理名称
  • 完成 curl 命令以重现 503 错误
  • 包含发生 503 Service Unavailable 错误的请求的跟踪文件
  • 如果 503 错误目前未发生,请提供时区和时区 过去发生 503 错误的时间。

如果您是私有云用户,请提供以下信息:

  • 观察到失败请求的完整错误消息。
  • 您观察到 503 错误的组织、环境名称和 API 代理名称。
  • API 代理软件包。
  • 包含发生 503 Service Unavailable 错误的请求的跟踪文件。
  • NGINX 访问日志。
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  • 消息处理器日志。
    /opt/apigee/var/log/edge-message-processor/logs/system.log
  • 发生 503 错误时包含时区信息的时间段。