查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
影片
請觀看以下影片,進一步瞭解如何解決 503 Service Unavailable 錯誤。
影片 | 說明 |
---|---|
後端伺服器發生 503 服務無法使用錯誤 | 請參閱下列文章:
|
問題
用戶端應用程式收到 HTTP 回應狀態 503,錯誤訊息 Service Unavailable 如下: 提供 API Proxy 呼叫
錯誤訊息
系統會顯示下列其中一則錯誤訊息:
HTTP/1.1 503 Service Unavailable
HTTP/1.1 503 Service Unavailable: Back-end server is at capacity
系統也可能顯示如下的錯誤訊息 :
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 回應的可能原因如下:
原因 | 說明 | 誰可以執行疑難排解步驟 |
---|---|---|
伺服器超載 | 後端伺服器超載或超出容量,無法處理任何新的 傳入用戶端要求 | 邊緣公有雲和私有雲使用者 |
伺服器維護中 | 後端伺服器可能正在維護中。 | 邊緣公有雲和私有雲使用者 |
原因:維護中伺服器/伺服器超載
在 Apigee Edge 中,後端伺服器可能會傳回 503 Service Unavailable 錯誤 下列任一情況:
- 後端伺服器超載/忙碌,無法處理任何新的要求。
- 後端伺服器因維護而暫時關閉。
診斷
如要診斷錯誤,您可以採用以下三種方法之一:
- 追蹤工具
- NGINX 存取記錄
- 直接呼叫後端伺服器
如要瞭解每種方法,請點按下列分頁標籤。
追蹤工具
- 啟用追蹤工作階段。 ,並發出 API 呼叫以重現問題:503 Service Unavailable。
- 請選取其中一個失敗的要求,然後檢查追蹤記錄。
- 瀏覽追蹤記錄的各個階段,並找出失敗發生的位置。
- 如果您發現目標伺服器傳回 503 錯誤,
503 錯誤的原因就是目標伺服器
這個追蹤記錄範例顯示已收到 503 Service Unavailable 回應 從目標伺服器執行以下動作:
- 按一下「Response from target server」(從目標伺服器收到的回應) 階段,然後完成
「Response Headers and Response Content」區段檢查是否有任何實用資訊:
- 「回應標頭」可能包含「Server」標頭, 傳送錯誤回應的來源。
- 回應內容可能包含額外資訊 目標伺服器傳送了 503 回應代碼。
- 檢查 503 錯誤,確認 503 錯誤是來自目標伺服器
AX 中的 X-Apigee-fault-source 和 X-Apigee-fault-code 值
(已記錄的 Analytics 資料) 追蹤記錄的階段步驟如下:
- 按一下「AX」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
- 檢查您是否使用 Proxy 鏈結,即目標伺服器/目標端點 在 Apigee 中叫用另一個 Proxy如何判斷這項資訊:
NGINX 存取記錄
您也可以查看 NGINX 授權記錄,判斷系統是否已傳送 503 狀態碼 由後端伺服器傳回如果過去曾經發生這個問題,這個做法就特別實用 或問題持續發生,而且您無法透過 UI 擷取追蹤記錄。 請按照下列步驟,根據 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 Service Unavailable 錯誤的實際原因。在這些情況下 503 Service Unavailable 在其他階段也可能發生在其他鏈結 Proxy 中。 您可以參考本教戰手冊進行診斷
- 如果您確定未使用 Proxy 鏈結,且您的 請前往「Resolution」。
呼叫後端伺服器
您可以直接呼叫後端伺服器,確認是否得到相同的 透過 Apigee Edge 提出要求時,收到 503 Service Unavailable 回應。
- 確認您已備妥所有必要標頭、查詢參數,以及能存取 需要做為要求的一部分傳遞至後端伺服器
- 如果後端服務可以公開存取,則可以使用 curl 指令 Postman 或任何其他 REST 用戶端,然後直接叫用後端伺服器 API。
- 如果只能透過訊息處理器存取後端伺服器,您可以使用 curl 指令、Postman 或任何其他 REST 用戶端,然後直接叫用後端伺服器 API 來自訊息處理器
- 確認後端服務確實傳回 503 Service Unavailable 錯誤。
解析度
如果您確定 503 錯誤來自後端伺服器,則可以執行 以解決問題:
- 如果是因為後端伺服器因維護而關閉而造成問題, 也能在維護期結束後讓後端伺服器上線
- 如果問題是因為後端伺服器超載而導致 修正這項問題。其他情況 您可能需要與後端伺服器團隊合作修正問題。
使用 API Monitoring 診斷問題
API Monitoring 可讓您 迅速診斷錯誤和效能 和延遲問題及其來源,例如開發人員應用程式、API Proxy、後端目標 或是 API 平台
逐步示範 情境,示範如何排解 API 的 5xx 問題 並取得相關快訊舉例來說,比方說,您可能想設定快訊通知在號碼到達時 的 message.adaptors.http.flow.ErrorResponseCode 錯誤超過特定門檻。
必須收集診斷資訊
如果按照上述說明操作後仍無法解決問題,請收集 然後透過診斷工具 Apigee 支援:
如果您是公有雲使用者,請提供下列資訊:
- 機構名稱
- 環境名稱
- API Proxy 名稱
- 完成 curl 指令即可重現 503 錯誤
- 含有 503 Service Unavailable 錯誤要求的追蹤檔
- 如果目前沒有發生 503 錯誤,請提供時區並附上時區 顯示 503 錯誤的資訊
如果您是私有雲的使用者,請提供下列資訊:
- 在失敗的要求中,觀察到的完整錯誤訊息。
- 您觀察到 503 錯誤的機構、環境名稱及 API Proxy 名稱。
- 以及 API Proxy 軟體包
- 包含要求傳回 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 錯誤時間的時段。