App Engine 彈性部署疑難排解

本文說明了在 App Engine 彈性環境中,為 Cloud Endpoints 部署排解疑難的技巧。如果您收到您的 API 要求傳回的錯誤訊息,請參閱排解回應錯誤一文以瞭解如何排解錯誤。

部署錯誤

本節說明如何排解 gcloud app deploy 的錯誤。

錯誤訊息 疑難排解
您的部署無法在指定的時間內回復良好健康狀態,並因此而復原。如果您認為這是個錯誤,請嘗試調整 readiness_check 區段中的 app_start_timeout_sec 設定。

確認 app.yaml 檔案中的 readiness_check 區段是否包含 app_start_timeout_sec 的值。如果沒有,請新增此區段,並將 app_start_timeout_sec 的值設為高於預設的 300 秒。詳情請參閱 就緒檢查

請確認您的專案已啟用 Endpoints 和 ESP 需要的所有 Google Cloud 服務。詳情請參閱「檢查必要服務」。

關於 rollout_strategy 的錯誤訊息

在部署前設定 app.yaml 時,您必須新增 endpoints_api_service 部分。可擴充服務 Proxy (ESP) 需要您在這個區段指定的設定,才能為服務取得設定。您必須在 config_id 欄位中指定設定 ID,或加入 rollout_strategy: managed 選項,但不能同時使用這兩種方式。這個選項可將 ESP 設為使用最新部署的服務設定。指定此選項時,在您部署新服務設定後 5 分鐘內,ESP 會偵測到變更並自動開始使用新設定。建議您指定此選項而非讓 ESP 使用特定的設定 ID。例如:

endpoints_api_service:
  name: example-project-12345.appspot.com
  rollout_strategy: managed

如果 endpoints_api_service 區段未包含 ESP 取得服務設定所需的資訊,則會顯示下列其中一個訊息:

錯誤訊息 疑難排解
rollout_strategy 設為 "managed" 時,config_id 遭到禁止 您無法同時指定設定 ID 和 rollout_strategy: managed。除非您有明確理由必須使用特定的設定 ID,否則我們建議您從 app.yaml 中移除 config_id: [YOUR_CONFIG_ID],並重新執行 gcloud app deploy
rollout_strategy 未指定或設為 "fixed" 時,必須指定 config_id 如果 app.yaml 不包含 rollout_strategy: managed,或是 rollout_strategy 設為 fixed,且您未指定設定 ID,系統就會顯示這則錯誤訊息。除非您有明確理由必須使用特定的設定 ID,否則我們建議您將 rollout_strategy: managed 新增至 app.yamlendpoints_api_service 部分,並重新執行 gcloud app deploy

查看執行個體上的記錄

App Engine 當機和系統記錄可提供相關資訊,說明為什麼應用程式無法正常啟動或執行作業。進一步偵錯資訊請參閱 Endpoints 記錄。

  1. 在 Google Cloud 控制台中,透過 SSH 登入您的虛擬機器。詳情請參閱連線至執行個體

  2. 使用文字檢視器,例如 tail

     tail -f /var/log/nginx/error.log
    

後續步驟