設定要求逾時

瞭解如何設定 Knative serving 服務必須傳回要求回應的時限。如果沒有在指定的時限內傳回回應,要求會結束,並傳回錯誤 504

逾時限制

逾時上限會因 GKE 叢集版本而異。

GKE 版本 預設限制 逾時上限
0.16.0-gke.1 以上版本 300 秒 24 小時
0.15.0-gke.3 以下版本 300 秒 900 秒

除了變更 Knative 服務要求逾時之外,您也應該檢查您的語言架構,查看您的語言架構是否有自己的要求逾時設定。若有,則也必須更新這項設定。

設定和更新要求逾時

變更任何設定都會建立新的修訂版本。除非您明確做出更新,變更這項設定,否則後續的修訂版本也會自動取得這個設定。

部署新服務或更新現有服務並部署修訂版本時,您可以使用 Google Cloud 控制台、Google Cloud CLI 或 YAML 檔案設定要求逾時:

控制台

  1. 前往 Google Cloud 控制台的 Knative Serving:

    前往 Knative serving

  2. 如要設定部署的新服務,請按一下「建立服務」。如要設定現有服務,請按一下該服務,然後按一下「Edit & Deploy New Revision」(編輯及部署新的修訂版本)

  3. 在「進階設定」下方,按一下「容器」

  4. 在「Request timeout」(要求逾時) 欄位中,輸入要使用的逾時值。您指定的值必須小於叢集 GKE 版本的逾時限制

  5. 按一下「下一步」繼續前往下一個部分。

  6. 在「設定這項服務的觸發方式」部分,選取要用來叫用服務的連線。

  7. 按一下「建立」,將映像檔部署到 Knative 服務,然後等待部署作業完成。

指令列

  • 如要為現有服務設定要求逾時,請執行 gcloud run services update 指令,並使用 --timeout 參數:

    gcloud run services update SERVICE --timeout TIMEOUT

    取代:

    • SERVICE 改為您的服務名稱。
    • TIMEOUT 改為您要的時間。請使用以秒為單位的整數值,或持續時間絕對值,例如 1m20s 代表 1 分 20 秒。您指定的值必須小於叢集 GKE 版本的逾時限制。指定 0,將逾時時間設為預設值
  • 如果是新服務,請執行 gcloud run deploy 指令並使用 --timeout 參數,設定要求逾時:

    gcloud run deploy SERVICE --image=IMAGE_URL --timeout TIMEOUT

    取代:

    • SERVICE 改為您的服務名稱。
    • IMAGE_URL,並參照容器映像檔,例如 gcr.io/cloudrun/hello
    • TIMEOUT 改為您要的時間。請使用以秒為單位的整數值,或持續時間絕對值,例如 1m20s 代表 1 分 20 秒。您指定的值必須小於叢集 GKE 版本的逾時限制。指定 0,將逾時時間設為預設值

YAML

您可以使用 gcloud run services describe 指令和 --format=export 標記,將現有服務的設定下載到 YAML 檔案中。然後修改該 YAML 檔案,並使用 gcloud run services replace 指令部署這些變更。請務必只修改指定的屬性。

  1. 將服務設定下載到本機工作區中名為 service.yaml 的檔案:

    gcloud run services describe SERVICE --format export > service.yaml

    SERVICE 替換為 Knative 服務服務名稱。

  2. 在你的本機檔案中,更新 timeoutSeconds 屬性:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE
          timeoutSeconds: TIMEOUT

    取代:

    • SERVICE 改為 Knative serving 服務名稱
    • IMAGE_URL,並參照容器映像檔,例如 gcr.io/cloudrun/hello
    • TIMEOUT,並以秒為單位設定逾時時間。
  3. 使用下列指令,以新設定取代服務:

    gcloud run services replace service.yaml