為工作設定工作逾時時間

根據預設,每項工作最多可執行 10 分鐘,您可以縮短或延長這段時間,最長可達 168 小時 (7 天)。使用 GPU 的工作,逾時時間上限為 12 小時 (預先發布版)。

您可以按照本頁面的說明設定工作逾時。工作執行作業沒有明確的逾時時間:所有任務完成後,工作執行作業就會完成。

單位指定時間長度。您可以指定逾時時間長度,以秒、分鐘或小時為單位,並以整數值表示。舉例來說,如要將逾時時間長度設為 10 分 5 秒,請將值指定為 605 秒。

如果工作已啟用重試功能,逾時設定會套用至工作的每次嘗試。如果工作嘗試未在這段時間內完成,就會停止。工作執行時間越長,越可能遇到導致失敗的問題,例如下游依附元件失敗、記憶體不足錯誤或基礎架構問題。建議您為所有工作啟用重試功能,尤其是執行時間較長的工作。

維護事件

不使用 GPU 的工作會在維護事件期間即時遷移。使用 GPU 的工作無法即時遷移,而是會終止;瞭解詳情。

遷移程序會保留工作狀態,但有一個例外狀況:維護事件期間,傳出虛擬私有雲網路連線會中斷。建議您使用可處理偶發連線重設的用戶端程式庫。

每當工作開始及完成遷移時,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)
        }
    }()
 }
 

長時間執行的 GPU 工作

在某些情況下 (例如長時間執行的 GPU 工作),維護事件可能會導致執行個體遭到先占或終止,而不會進行即時遷移。

如要妥善處理這些事件,其中一個做法是擷取 SIGTERM 信號,Cloud Run 會在工作終止前 10 秒傳送這個信號,以便寫入最終檢查點,並將狀態儲存至永久儲存空間,藉此儲存進度。詳情請參閱「設計彈性的長時間執行 GPU 工作」。

不過請注意,SIGTERM 之後,您有大約 10 秒的時間,工作才會終止。這段時間不足以寫入大型模型檢查點。請將 SIGTERM 處理常式視為僅盡力清除小型狀態,並以定期檢查點做為主要保護措施。請根據可承受的工作損失量,選擇檢查點間隔。

由於 GPU 任務不會即時遷移,因此設定多小時逾時的任務在完成前,至少會中斷一次。工作逾時時間是上限,不保證執行作業不會中斷。

必要的角色

如要取得設定 Cloud Run 工作的必要權限,請要求管理員授予您下列 IAM 角色:

如要查看與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱「Cloud Run IAM 角色」和「Cloud Run IAM 權限」。如果 Cloud Run 工作與Google Cloud API (例如 Cloud 用戶端程式庫) 互動,請參閱服務身分設定指南。如要進一步瞭解如何授予角色,請參閱部署權限和管理存取權。

設定任務逾時時間

如要指定 Cloud Run 工作的任務逾時時間,請按照下列指示操作:

控制台

  1. 前往 Google Cloud 控制台的「Cloud Run」頁面:

    前往 Cloud Run。

  2. 從 Cloud Run 導覽選單中選取「工作」:

    1. 如要建立新工作,請按一下「Deploy container」(部署容器),填寫初始工作設定頁面。

    2. 如要設定現有工作,請選取該工作,然後按一下「View and edit job configuration」(查看及編輯工作設定)。

  3. 按一下「容器、連線、安全性」,展開工作屬性頁面。

  4. 在「Task timeout」(工作逾時) 欄位中,指定目前工作中工作任務的時間長度上限,然後選取「Time unit」(時間單位)。您只能以秒、分鐘或小時為單位,指定逾時時間長度的整數值。舉例來說,如要將時間長度設為 10 分 5 秒,請在「Task timeout」(工作逾時) 欄位中指定 605,然後將「Time unit」(時間單位) 選為「second」(秒)。

  5. 按一下「建立」或「更新」。

gcloud

  1. 如要為正在建立的工作設定:

    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 代表十分鐘五秒。
  2. 如要更新工作:

    gcloud run jobs update JOB_NAME --task-timeout TIMEOUT

YAML

  1. 如果您要建立新工作,請略過這個步驟。如要更新現有工作,請下載其 YAML 設定:

    gcloud run jobs describe JOB --format export > job.yaml
  2. 更新 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。

    您也可以指定更多設定詳細資料,例如環境變數或記憶體限制。

  3. 更新現有工作設定:

    gcloud run jobs replace job.yaml

Terraform

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

在 Terraform 設定中,將下列內容新增至 google_cloud_run_v2_job 資源:
resource "google_cloud_run_v2_job" "default" {
  name     = "cloud-run-job-timeout"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    template {
      timeout = "3.500s"

      containers {
        image = "us-docker.pkg.dev/cloudrun/container/job:latest"
      }
    }
  }
}

查看工作逾時設定

如要查看 Cloud Run 工作的目前工作逾時設定,請使用 Google Cloud 控制台或 Google Cloud CLI:

控制台

  1. 前往 Google Cloud 控制台的「Cloud Run jobs」(Cloud Run 工作) 頁面:

    前往「Cloud Run jobs」(Cloud Run 工作)

  2. 按一下工作,開啟「Job details」(工作詳細資料) 頁面。

  3. 按一下「查看及編輯工作設定」。

  4. 在設定詳細資料中,找出工作逾時設定。

gcloud

  1. 執行下列指令:

    gcloud run jobs describe JOB
  2. 在傳回的設定中,找出工作逾時設定。