您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
影片
請觀看下列影片,進一步瞭解如何解決 503 服務無法使用錯誤。
| 影片 | 說明 |
|---|---|
| 後端伺服器傳回「503 Service Unavailable」錯誤 | 瞭解以下內容:
|
問題
用戶端應用程式在 API Proxy 呼叫後,收到 HTTP 回應狀態 503 和「Service Unavailable」訊息。
錯誤訊息
您可能會看到下列其中一則錯誤訊息:
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 存取記錄
- 直接呼叫後端伺服器
點選下方分頁標籤,即可瞭解各個方法。
追蹤工具
- 啟用追蹤工作階段,然後發出 API 呼叫來重現問題 - 503 服務無法使用。
- 選取其中一個失敗的要求,然後檢查追蹤記錄。
- 瀏覽追蹤記錄的各個階段,找出發生失敗的位置。
- 如果發現目標伺服器傳回 503 錯誤做為回應,503 錯誤的原因就是目標伺服器。
以下是追蹤記錄的螢幕截圖範例,顯示目標伺服器傳回的 503 Service Unavailable 回應:
- 按一下「Response received from target server」(從目標伺服器收到回應) 階段,然後查看「Response Headers」(回應標頭) 和「Response Content」(回應內容) 區段,確認是否有任何實用資訊:
- 回應標頭可能包含伺服器標頭,指出錯誤回應的傳送來源。
- 「回應內容」可能包含目標伺服器傳送 503 回應代碼的其他相關資訊。
- 請按照下列步驟,在追蹤記錄的 AX (記錄的 Analytics 資料) 階段中,檢查 X-Apigee-fault-source 和 X-Apigee-fault-code 的值,確認 503 錯誤來自目標伺服器:
- 點選「AX」(記錄的 Analytics 資料) 階段,如下方螢幕截圖所示:

- 向下捲動「階段詳細資料」至「回應標頭」部分,然後判斷 X-Apigee-fault-code 和 X-Apigee-fault-source 的值,如下所示:

- 如果 X-Apigee-fault-source 和 X-Apigee-fault-code 的值與下表顯示的值相符,則可確認 503 錯誤來自目標伺服器:
回應標頭 值 X-Apigee-fault-source 目標 X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
- 點選「AX」(記錄的 Analytics 資料) 階段,如下方螢幕截圖所示:
- 檢查您是否使用 Proxy 鏈結,也就是目標伺服器/目標端點是否在 Apigee 中叫用另一個 Proxy。如要判斷是否為這種情況,請按照下列步驟操作:
NGINX 存取記錄
您也可以參閱 NGINX 存取記錄,判斷後端伺服器是否傳送 503 狀態碼。如果問題過去曾發生,或是問題間歇性發生,且您無法在使用者介面中擷取追蹤記錄,這個方法就特別實用。請按照下列步驟,從 NGINX 存取記錄檔判斷這項資訊:
- 檢查 NGINX 存取記錄。
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
- 在特定時間內搜尋特定 API Proxy 的任何 503 錯誤 (如果問題發生在過去),或搜尋仍因 503 錯誤而失敗的任何要求。
- 如有任何 503 錯誤,請檢查錯誤是否來自後端伺服器。
如果 X-Apigee-fault-source 和 X-Apigee-fault-code 的值與下表顯示的值相符,則 503 錯誤來自後端伺服器:
回應標頭 值 X-Apigee-fault-source 目標 X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode 以下是顯示目標伺服器導致 503 錯誤的範例項目:
- 檢查特定 API Proxy,確認您使用的是Proxy 鏈結,也就是如果目標伺服器/目標端點未在 Apigee 中叫用其他 Proxy,如果您使用 Proxy 鏈結,請針對鏈結的 Proxy 重複上述所有步驟,直到找出導致 503 服務無法使用錯誤的實際原因為止。在這些情況下,其他階段的其他鏈結代理伺服器也可能發生 503 服務無法使用的情況,您可以使用這本劇本診斷問題。
- 如果確認未使用 Proxy 鏈結,且 503 錯誤來自後端伺服器,請前往「解決方法」。
呼叫後端伺服器
您可以直接呼叫後端伺服器,確認您收到的 503 Service Unavailable 回應與透過 Apigee Edge 發出要求時收到的相同。
- 確認您已備妥所有必要標頭、查詢參數,以及需要做為要求的一部分傳遞至後端伺服器的任何憑證。
- 如果後端服務可公開存取,您可以使用 curl 指令、Postman 或任何其他 REST 用戶端,直接叫用後端伺服器 API。
- 如果後端伺服器只能從訊息處理器存取,您可以使用 curl 指令、Postman 或任何其他 REST 用戶端,直接從訊息處理器叫用後端伺服器 API。
- 確認後端服務確實傳回 503 服務無法使用錯誤。
解析度
如果確定 503 錯誤來自後端伺服器,請採取下列行動來解決問題:
- 如果問題是因為後端伺服器正在維護而停機所致,您可以在維護期結束後將後端伺服器上線。
- 如果問題是後端伺服器超載所致,請修正問題 (如果您有權存取後端伺服器)。否則,您可能需要與後端伺服器團隊合作修正問題。
使用 API 監控功能診斷問題
API 監控功能可協助您快速找出問題領域,診斷錯誤、效能和延遲問題,以及問題來源 (例如開發人員應用程式、API Proxy、後端目標或 API 平台)。
逐步瞭解範例情境,瞭解如何使用 API 監控功能排解 API 的 5xx 問題。舉例來說,您可能想設定快訊,在 messaging.adaptors.http.flow.ErrorResponseCode 錯誤數超過特定門檻時收到通知。
必須收集診斷資訊
如果按照上述指示操作後問題仍未解決,請收集下列診斷資訊,然後與 Apigee 支援團隊聯絡。
如果您是公有雲使用者,請提供下列資訊:
- 機構名稱
- 環境名稱
- API Proxy 名稱
- 重現 503 錯誤的完整 curl 指令
- 包含 503 Service Unavailable 錯誤要求的追蹤記錄檔
- 如果目前沒有發生 503 錯誤,請提供過去發生 503 錯誤的時間範圍和時區資訊。
如果您是私有雲使用者,請提供下列資訊:
- 失敗要求顯示的完整錯誤訊息。
- 您觀察到 503 錯誤的機構、環境名稱和 API Proxy 名稱。
- API Proxy 套裝組合。
- 包含要求 (發生 503 服務無法使用錯誤) 的追蹤記錄檔。
- NGINX 存取記錄檔。
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
- 訊息處理器記錄。
/opt/apigee/var/log/edge-message-processor/logs/system.log
- 發生 503 錯誤的時間範圍,以及時區資訊。