You need to enable JavaScript to run this app.
导航
请求返回 504 Service unavailable 如何处理?
最近更新时间:2024.09.11 10:32:28首次发布时间:2024.09.11 10:32:28

问题描述

调用 API 网关服务时,返回504 Service unavailable错误,Response Body 内容为upstream connect error or disconnect/reset before headers. reset reason: connection failure

解决方案

原因分析解决方案
网络链路问题请确认网络链路通畅。

后端服务自身异常

请排查您的后端服务状态。

  • 服务状态异常:请自行处理后端服务业务逻辑。

  • 服务状态正常:请确认关联 API 网关的后端服务是否被删除。

    • 关联的后端服务已删除:请登录 API 网关控制台,修改 API 网关路由关联的后端服务,配置为可以访问的后端服务。

    • 关联的后端服务未删除:请 提交工单

response_flags=UF

查看访问日志时显示 response_flags=UF,表示后端 Upstream 没有一个健康的 IP。

  • 后端 Upstream 超过了路由的 timeout 还未返回响应。

    istio 默认设置 timeout 为 0,即永不超时。当您修改路由 timeout 为非 0 值后,导致此报错。

    请调大路由的 timeout。

  • 请检查路由的 timeout 设置是否小于 15s。

response_flag=UT

route.timeout 小于(num_retries+1)*cluster.connect_timeout 时,虽然日志显示 response_flag=UT,但可能是 response_flags=UF 的场景。
请按照 response_flags=UF 的场景,逐一进行排查并解决。
参数说明:

  • route.timeout:默认 15 秒,包含所有的重试时间。

  • num_retries:失败后重试的次数,默认值为 2,num_retries+1=3,即总共会有 3 次请求。

  • cluster.connect_timeout:上游连接的超时时间,默认 5s。