503 Service 無法使用 - 後端伺服器

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

影片

請觀看以下影片,進一步瞭解如何解決 503 Service Unavailable 錯誤。

影片 說明
後端伺服器發生 503 服務無法使用錯誤 請參閱下列文章:
  • Apigee Edge 中的 503 服務無法使用錯誤簡介
  • 疑難排解及解決即時 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 存取記錄
  • 直接呼叫後端伺服器

如要瞭解每種方法,請點按下列分頁標籤。

追蹤工具

  1. 啟用追蹤工作階段。 ,並發出 API 呼叫以重現問題:503 Service Unavailable。
  2. 請選取其中一個失敗的要求,然後檢查追蹤記錄。
  3. 瀏覽追蹤記錄的各個階段,並找出失敗發生的位置。
  4. 如果您發現目標伺服器傳回 503 錯誤, 503 錯誤的原因就是目標伺服器

    這個追蹤記錄範例顯示已收到 503 Service Unavailable 回應 從目標伺服器執行以下動作:

  5. 按一下「Response from target server」(從目標伺服器收到的回應) 階段,然後完成 「Response Headers and Response Content」區段檢查是否有任何實用資訊:
    • 「回應標頭」可能包含「Server」標頭, 傳送錯誤回應的來源。
    • 回應內容可能包含額外資訊 目標伺服器傳送了 503 回應代碼。
    ,瞭解如何調查及移除這項存取權。
  6. 檢查 503 錯誤,確認 503 錯誤是來自目標伺服器 AX 中的 X-Apigee-fault-sourceX-Apigee-fault-code 值 (已記錄的 Analytics 資料) 追蹤記錄的階段步驟如下:
    1. 按一下「AX」AX(已記錄的 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. 檢查您是否使用 Proxy 鏈結,即目標伺服器/目標端點 在 Apigee 中叫用另一個 Proxy如何判斷這項資訊:
    1. 返回「Request sent to target server」(傳送至目標伺服器的要求) 階段,然後 按一下「顯示 Curl」按鈕,並判斷目標伺服器主機別名。
    2. 如果目標伺服器主機別名指向虛擬主機別名, Proxy 鏈結。在此情況下,您需要針對鏈結 ,直到找出導致 503 Service Unavailable 錯誤的實際原因。 在這樣的情況下,503 Service Unavailable 可能會在其他鏈結 Proxy 中 以及可用於診斷 此教戰手冊
    3. 如果目標伺服器主機別名指向您的後端伺服器,請前往 解析度

NGINX 存取記錄

您也可以查看 NGINX 授權記錄,判斷系統是否已傳送 503 狀態碼 由後端伺服器傳回如果過去曾經發生這個問題,這個做法就特別實用 或問題持續發生,而且您無法透過 UI 擷取追蹤記錄。 請按照下列步驟,根據 NGINX 存取記錄判斷這項資訊:

  1. 查看 NGINX 存取記錄。
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  2. 搜尋特定期間內特定 API Proxy 的 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 Proxy,並確認您使用的是 Proxy 鏈結,例如 如果 目標伺服器/目標端點不會在 Apigee 中叫用其他 Proxy。如果使用 請在 Proxy 鏈結中,針對鏈結的 Proxy 執行上述所有步驟,直到 判斷出 503 Service Unavailable 錯誤的實際原因。在這些情況下 503 Service Unavailable 在其他階段也可能發生在其他鏈結 Proxy 中。 您可以參考本教戰手冊進行診斷
  5. 如果您確定未使用 Proxy 鏈結,且您的 請前往「Resolution」

呼叫後端伺服器

您可以直接呼叫後端伺服器,確認是否得到相同的 透過 Apigee Edge 提出要求時,收到 503 Service Unavailable 回應。

  1. 確認您已備妥所有必要標頭、查詢參數,以及能存取 需要做為要求的一部分傳遞至後端伺服器
  2. 如果後端服務可以公開存取,則可以使用 curl 指令 Postman 或任何其他 REST 用戶端,然後直接叫用後端伺服器 API。
  3. 如果只能透過訊息處理器存取後端伺服器,您可以使用 curl 指令、Postman 或任何其他 REST 用戶端,然後直接叫用後端伺服器 API 來自訊息處理器
  4. 確認後端服務確實傳回 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 錯誤時間的時段。