您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
問題
用戶端應用程式會收到 HTTP 狀態碼 504,以及 API 呼叫的回應訊息「Gateway Timeout」。
這項錯誤回應表示在執行 API 呼叫期間,用戶端未及時收到 Apigee Edge 或後端伺服器的回應。
錯誤訊息
用戶端應用程式會收到下列回應代碼:
HTTP/1.1 504 Gateway Timeout
這個代碼後面可能會顯示類似下方的錯誤訊息:
<html> <head><title>504 Gateway Timeout</title></head> <body bgcolor="white"> <center><h1>504 Gateway Timeout</h1></center> </body> </html>
什麼原因會導致閘道逾時?
透過 Apigee Edge 提出的 API 要求,通常會經過「用戶端 -> 路由器 -> 訊息處理器 -> 後端伺服器」路徑,如下圖所示:

用戶端應用程式、路由器和訊息處理器都已設定適當的逾時值。Apigee Edge 會根據逾時值,在一段時間內等待每個 API 要求的相關回應。如果未在指定時間範圍內收到回應,系統會傳回 504 閘道逾時回應。
可能原因
在 Apigee Edge 中,後端伺服器傳回 504 Gateway Timeout 回應的常見原因如下:
| 原因 | 說明 | 疑難排解操作說明 |
|---|---|---|
| 後端伺服器回應「504 Gateway Timeout」 | 後端伺服器逾時,並將 504 閘道逾時回應傳回給訊息處理器。 | Edge 私有雲和公有雲使用者 |
後端伺服器傳回 504 Gateway Timeout
後端伺服器可能會傳回 HTTP 回應代碼 504 Gateway Timeout。
診斷
本節說明如何正確診斷 504 閘道逾時錯誤。下方列出私有雲和公有雲使用者的程序。
程序 1:使用 Trace (私有雲和公有雲使用者)
- 在 Apigee UI 中,為受影響的 API 啟用「追蹤」。
- 將要求傳送至後端伺服器。
- 如果失敗的 API 要求在「追蹤」中顯示來自後端伺服器的 504 回應,則 504 閘道逾時的原因是後端伺服器。
- 如要判斷回應時間,請在「追蹤」中按一下「Response received from target server」(收到目標伺服器的回應) 階段。如範例所示,經過時間為 60004 毫秒:

「階段詳細資料」部分提供額外資訊:
- 當中會醒目顯示從後端伺服器收到的「504 Gateway Timeout」回應。
- 「Response Content」部分會顯示後端伺服器的完整回應主體。如先前所述,回應酬載的格式和內容可能會因後端伺服器實作方式而異。
- 「回應標頭」>「伺服器」部分可能會指出回應的來源。
- 如要查看 Analytics 資料並確認診斷結果,請按一下「追蹤記錄」中的「Analytics Data Recorded」(已記錄 Analytics 資料) 階段,如下圖所示:

階段詳細資料的「回應標頭」部分會顯示
X-Apigee-fault-code和X-Apigee-fault-source的值,如下圖所示:
如果這些欄位包含下表顯示的值,則 504 錯誤回應來自後端伺服器:
回應標頭 值 X-Apigee-fault-source 目標 X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode - 檢查 Proxy 鏈結。 請按照下列步驟,判斷後端伺服器是否在 Apigee 中叫用其他 Proxy:
程序 2:直接叫用後端伺服器 API (公有雲和私有雲使用者)
直接呼叫後端伺服器,確認透過 Apigee Edge 提出要求時,是否會遇到相同的 504 Gateway Timeout 回應行為。
- 請確認您已備妥所有必要標頭、查詢參數和憑證,可做為要求的一部分傳遞至後端伺服器。
- 如果後端服務可公開存取,您可以使用
curl指令、Postman 或任何其他 REST 用戶端,直接叫用後端伺服器 API。 - 如果後端伺服器只能從訊息處理器存取,請使用
curl指令、Postman 或任何其他 REST 用戶端,直接從訊息處理器叫用後端伺服器 API。 - 如果後端服務傳回 504 Gateway Timeout 回應,請繼續進行「解決方案」。
程序 3:檢查 NGINX 存取記錄 (僅限 Private Cloud 使用者)
NGINX 存取記錄有助於判斷 504 錯誤回應是否由後端伺服器傳送。 如果問題發生在過去、間歇性發生,或無法在追蹤記錄中擷取,這個方法就特別實用。請按照下列步驟檢查 NGINX 存取記錄檔:
- 使用下列指令查看 NGINX 存取記錄:
/opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log
- 檢查受影響的 API Proxy 是否有 504 錯誤回應。您可以檢查特定時間範圍,瞭解問題是否發生在過去,或判斷要求是否仍因 504 錯誤回應而失敗。
- 如有任何 504 錯誤回應,請判斷錯誤回應是否來自後端伺服器。
- 檢查受影響的 API Proxy,確認是否有Proxy 鏈結,也就是後端伺服器/目標端點在 Apigee 中叫用另一個 Proxy。如果 API Proxy 使用Proxy 鏈結 ,請針對每個鏈結的 Proxy 重複上述步驟,診斷 504 Gateway Timeout 錯誤回應的原因。如要診斷其他階段的鏈結 Proxy 中發生的 504 閘道逾時問題,請使用這份應對手冊。
- 如果沒有 Proxy 鏈結,且 504 錯誤回應來自後端伺服器,請繼續進行「解決方法」。
下圖是 NGINX 記錄項目的範例,顯示目標伺服器導致的 504 錯誤回應:

如果 X-Apigee-fault-source 和 X-Apigee-fault-code 欄位包含下表顯示的值,則 504 回應來自後端伺服器:
| 回應標頭 | 值 |
|---|---|
| X-Apigee-fault-source | 目標 |
| X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
程序 4:使用 API Monitoring (僅限公有雲使用者)
API 監控功能可協助您快速找出問題區域,診斷錯誤、效能和延遲問題,以及問題來源 (例如開發人員應用程式、API Proxy、後端目標或 API 平台)。
逐步瞭解範例情境,瞭解如何使用 API 監控功能排解 API 的 5xx 問題。舉例來說,您可以設定快訊,在 504 狀態碼數量超過特定門檻時通知管理員。
。解析度
您可以按照上述診斷程序,與後端伺服器團隊合作修正後端伺服器中的問題。這可能包括調整後端伺服器中的逾時,或目標伺服器前方任何負載平衡器中的逾時。
收集診斷資訊
如果問題仍未解決,請將下列診斷資訊提供給 Apigee 支援團隊。
如果您是公有雲使用者,請提供下列資訊:
- 機構名稱
- 環境名稱
- API Proxy 名稱
- 用於重現 504 錯誤回應的完整
curl指令 - 追蹤檔案,其中包含收到 504 Gateway Timeout 錯誤回應的 API 要求
如果您是 Private Cloud 使用者,請提供下列資訊:
- 失敗要求顯示的完整錯誤訊息
- 環境名稱
- API Proxy 套裝組合
- 追蹤檔案,其中 API 要求收到 504 Gateway Timeout 錯誤回應
- NGINX 存取記錄
/opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log
- 訊息處理器記錄
/opt/apigee/var/log/edge-message-processor/logs/system.log