如果服務執行時間過長,系統會採取步驟終止或節流該服務。
如果是 Cloud Run 服務,要求逾時設定會指定部署到 Cloud Run 的服務必須傳回回應的時限。如果沒有在指定的時限內傳回回應,要求會結束,並傳回錯誤 504。請注意,系統不會終止處理要求的容器執行個體。容器或程式碼可能會繼續處理已終止的要求,也可能會處理其他要求。為避免發生這種情況,請使用下列技巧,防止服務發生逾時:
- 將逾時時間設為高於預期執行時間。
- 追蹤執行期間的剩餘時間。然後執行清理作業並提早返回。
逾時時間
逾時時間預設為 5 分鐘 (300 秒),最長可延長至 60 分鐘 (3600 秒)。
從 Eventarc 事件、Pub/Sub 推送訂閱項目或 Cloud Scheduler 觸發服務時,適用這些服務的逾時設定。
您可以透過更新服務設定,或在部署容器映像檔時變更這項設定。
除了變更 Cloud Run 要求逾時之外,您也應該要檢查您的語言架構,查看您的語言架構是否有自己的要求逾時設定。若有,則也必須更新這項設定。Cloud Run 服務的部分用戶端也可能會設定更嚴格的逾時時間。
必要的角色
如要取得設定及部署 Cloud Run 服務所需的權限,請要求管理員授予下列 IAM 角色:
-
Cloud Run 開發人員 (
roles/run.developer
) 在 Cloud Run 服務上 -
服務帳戶使用者 (
roles/iam.serviceAccountUser
) 服務身分
如果您要從原始碼部署服務或函式,您也必須在專案和 Cloud Build 服務帳戶中獲得額外角色。
如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱 Cloud Run IAM 角色和 Cloud Run IAM 權限。如果 Cloud Run 服務與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。 如要進一步瞭解如何授予角色,請參閱部署權限和管理存取權。
設定和更新要求逾時
變更任何設定都會建立新的修訂版本。除非您明確做出更新,變更這項設定,否則後續的修訂版本也會自動取得這個設定。
當您建立新服務或部署新修訂版本時,可以使用 Google Cloud 控制台、gcloud 指令列或 YAML 檔案設定要求逾時。
控制台
前往 Google Cloud 控制台的 Cloud Run:
從選單中選取「服務」,然後按一下「部署容器」,設定新服務。如要設定現有服務,請按一下該服務,然後點選「Edit and deploy new revision」(編輯及部署新修訂版本)。
如要設定新服務,請填寫初始服務設定頁面,然後按一下「容器、磁碟區、網路與安全性」,展開服務設定頁面。
按一下「容器」分頁標籤。
- 在「Request timeout」(要求逾時) 欄位中,輸入要使用的逾時值 (以秒為單位)。使用介於
1
到3600
秒之間的值,或介於 1 到60
分鐘之間的值。
- 在「Request timeout」(要求逾時) 欄位中,輸入要使用的逾時值 (以秒為單位)。使用介於
按一下 [Create] (建立) 或 [Deploy] (部署)。
gcloud
針對某個修訂版本,您可以使用下列指令,隨時更新要求逾時:
gcloud run services update SERVICE --timeout=TIMEOUT
更改下列內容:
- SERVICE:服務名稱。
TIMEOUT:必須傳回回應的時間,請使用整數值或持續時間絕對值,例如
1m20s
代表 1 分 20 秒。如果您使用整數值,系統將假設單位是「秒」。您指定的值必須少於 60 分鐘。
您也可以在部署期間,使用以下指令設定要求逾時:
gcloud run deploy --image IMAGE_URL --timeout=TIMEOUT
更改下列內容:
- IMAGE_URL:容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/hello:latest
。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
。 - TIMEOUT:必須傳回回應的時間,請使用整數值或持續時間值,例如
1m20s
代表 1 分 20 秒。如果您使用整數值,系統將假設單位是「秒」。指定的值必須少於 60 分鐘。
YAML
如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
更新
timeoutSeconds
屬性:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE timeoutSeconds: VALUE
更改下列內容:
- SERVICE:Cloud Run 服務的名稱。
- IMAGE_URL:容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/hello:latest
。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
。 - VALUE:所選逾時時間,以秒為單位。
使用下列指令建立或更新服務:
gcloud run services replace service.yaml
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定中,將下列內容新增至google_cloud_run_v2_service
資源:將 300s
改為服務所需的請求逾時時間。
查看要求逾時設定
如要查看 Cloud Run 服務目前的「要求逾時」設定:
控制台
前往 Google Cloud 控制台的 Cloud Run:
按一下感興趣的服務,開啟「服務詳細資料」頁面。
按一下「Revisions」(修訂版本) 分頁標籤。
在右側的詳細資料面板中,要求逾時設定會列在「容器」分頁下方。
gcloud
使用下列指令:
gcloud run services describe SERVICE
在傳回的設定中找出要求逾時設定。