預設情況下,每個任務最多運行 10 分鐘:您可以將其變更為更短的時間或更長的時間,最長可達 168 小時(7 天)。對於使用 GPU 的任務,最大可用逾時時間為 1 小時。
您可以依照本頁所述設定任務逾時時間。作業執行沒有明確的逾時時間:當所有任務完成時,作業執行即結束。
這些單位表示持續時間。您可以將超時持續時間指定為以秒、分鐘或小時為單位的整數值。例如,要將超時持續時間設定為 10 分鐘 5 秒,請將值指定為 605 秒。
如果您的作業啟用了重試功能,則逾時設定適用於任務的每次嘗試。 如果任務嘗試未在此時間內完成,則會停止。作業運行時間越長,就越容易遇到導致其失敗的問題,例如下游依賴項故障、記憶體不足錯誤或基礎設施問題。我們建議為所有作業啟用重試功能,尤其是對於運行時間較長的作業。
維護事件
各項工作都會定期進行維護。維護期間,所有正在進行的任務都會從目前機器遷移到另一台機器。 任務遷移期間處理過程會短暫暫停。
遷移過程會保留任務的狀態,但有一個明顯的例外:在維護事件期間,出站 VPC 網路連線會中斷。 我們建議您使用能夠處理偶爾連線重設的客戶端程式庫。
Cloud Run 會在每次遷移任務開始和結束時列印出日誌訊息。
此外,如果您想以特定方式監控或處理維護事件,您可以擷取 SIGTSTP 訊號,該訊號會在任務遷移前 10 秒發送。遷移後,任務重新啟動後會立即收到 SIGCONT 訊號。
以下 Go 範例是一個函數,用於擷取這些訊號並列印出一條日誌條目:
func testSignals() { sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGTSTP, syscall.SIGCONT) go func() { for { sig := <-sigs log.Printf("Got Signal: %v", sig) } }() }
必要的角色
如要取得設定 Cloud Run 作業所需的權限,請要求管理員授予您下列 IAM 角色:
- Cloud Run 開發人員 (
roles/run.developer) 在 Cloud Run 工作上 - 服務身分上的服務帳戶使用者 (
roles/iam.serviceAccountUser)
如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱「Cloud Run IAM 角色」和「Cloud Run IAM 權限」。如果 Cloud Run 作業與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。如要進一步瞭解如何授予角色,請參閱「部署權限」和「管理存取權」。
設定任務超時
若要為 Cloud Run 作業指定任務逾時時間:
控制台
前往 Google Cloud 控制台的 Cloud Run「Jobs」頁面:
按一下「Deploy container」(部署容器),填寫初始工作設定頁面。如要設定現有工作,請選取該工作,然後按一下「查看及編輯工作設定」。
按一下「容器、連線、安全性」,展開工作屬性頁面。
按一下「一般」分頁標籤。
- 在 任務逾時 欄位中,指定目前作業中作業任務的最大持續時間,並選擇 時間單位。您只能將逾時持續時間指定為 秒、分鐘 或 小時 的整數值。例如,要設定持續時間為 10 分 5 秒,請在 任務逾時 欄位中指定
605,並將 時間單位 選取為 秒。
- 在 任務逾時 欄位中,指定目前作業中作業任務的最大持續時間,並選擇 時間單位。您只能將逾時持續時間指定為 秒、分鐘 或 小時 的整數值。例如,要設定持續時間為 10 分 5 秒,請在 任務逾時 欄位中指定
按一下「建立」或「更新」。
gcloud
對於您正在創建的職位:
gcloud run jobs create JOB_NAME --image IMAGE_URL --task-timeout TIMEOUT
取代
- 將 JOB_NAME 改為您的工作名稱。
IMAGE_URL:容器映像檔的參照,例如us-docker.pkg.dev/cloudrun/container/job:latest。- TIMEOUT 表示工作任務的最大持續時間,指定時間量和單位:例如,
10m5s表示十分鐘零五秒。
您正在更新的職位:
gcloud run jobs update JOB_NAME --task-timeout TIMEOUT
YAML
如要建立新工作,請略過這個步驟。 如要更新現有工作,請下載其 YAML 設定:
gcloud run jobs describe JOB_NAME --format export > job.yaml
更新
timeoutSeconds:屬性:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB spec: template: spec: template: spec: containers: - image: IMAGE timeoutSeconds: TIMEOUT
更改項目:
- 將 JOB_NAME 改為您的工作名稱。
IMAGE_URL:容器映像檔的參照,例如us-docker.pkg.dev/cloudrun/container/job:latest。- TIMEOUT 指定作業任務的最大持續時間,具體時間為多少時間,單位為多少。時間只能以秒、分鐘或小時為單位指定為整數值。例如,若要設定持續時間為 10 分鐘 5 秒,請指定
605。
您也可以指定更多配置細節,例如環境變數或記憶體限制。
更新現有工作設定:
gcloud run jobs replace job.yaml
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定的google_cloud_run_v2_job 資源中新增下列項目:查看任務超時設定
若要查看 Cloud Run 作業的目前任務逾時設定:
控制台
前往 Google Cloud 控制台的 Cloud Run jobs 頁面:
按一下所需工作,開啟「工作詳細資料」頁面。
按一下「查看及編輯工作設定」。
在配置詳情中找到任務超時設定。
gcloud
使用下列指令:
gcloud run jobs describe JOB_NAME
在傳回的配置中找到任務逾時設定。