本文說明如何設定逾時,限制工作和可執行檔的執行時間。或者,如果您希望可執行的項目在工作中的其他可執行項目完成執行後立即完成,請改用背景可執行項目。
逾時會指定允許工作或可執行檔執行的時間長度。Batch 不允許作業執行超過 14 天,也不會為個別工作和可執行檔設定預設逾時。因此,個別工作或可執行檔最長可執行 14 天,之後就會自動失敗。但如果工作和可執行檔並非要執行這麼久,這項設定可能會導致意外費用和延遲。為避免執行時間過長,您可以為工作和可執行檔設定逾時。
事前準備
- 如果您從未使用過 Batch,請參閱「開始使用 Batch」,並完成專案和使用者的必要條件,啟用 Batch。
-
如要取得建立作業所需的權限,請要求管理員授予下列 IAM 角色:
-
批次工作編輯者 (
roles/batch.jobsEditor
) 專案 -
服務帳戶使用者 (
roles/iam.serviceAccountUser
) 在作業的服務帳戶上,預設為預設 Compute Engine 服務帳戶
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
-
批次工作編輯者 (
設定逾時
您可以為可執行檔、工作或兩者設定逾時。可執行檔的逾時時間會指定該可執行檔的執行時間上限。任務的逾時時間會指定該任務的執行時間上限,也就是其可執行項目的所有個別執行時間總和。舉例來說,如果工作有 3 個可執行檔,且全部同時執行 1 分鐘,則工作執行時間為 3 分鐘,而非 1 分鐘。
如果設定重疊的逾時時間 (例如可執行檔和可執行檔工作都設有逾時時間),只要超過其中一個逾時時間,就會觸發自動失敗。舉例來說,假設您將工作逾時時間設為 60 秒,而該工作每個可執行的逾時時間則設為 120 秒。接著,當可執行檔的執行時間總和超過 60 秒時,這個範例工作和所有可執行檔都會失敗,且無法觸發 120 秒的逾時。
如要為工作中的工作和可執行檔設定適當的逾時時間,請分析先前執行的類似工作記錄,判斷類似工作負載的工作和可執行檔一般執行時間。
設定工作的逾時時間
使用 Google Cloud CLI 或 REST API 建立工作,並在 JSON 檔案的 taskSpec
物件中加入 maxRunDuration
欄位:
{
"taskGroups": [
{
"taskSpec": {
...
"maxRunDuration": "TIMEOUT"
}
}
]
}
將 TIMEOUT
替換為允許工作執行的秒數上限或分數部分。例如:255s
。
如果工作要將工作逾時時間設為 255 秒,JSON 設定檔會類似於下列內容:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
}
}
],
"maxRunDuration": "255s"
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
如果工作超過逾時時間,工作會自動失敗,且工作狀態事件和記錄中的結束代碼 50005
會指出逾時時間。如要進一步瞭解逾時問題,請參閱退出代碼 50005 的疑難排解說明文件。
設定可執行檔的逾時時間
使用 Google Cloud CLI 或 REST API 建立工作,並在 JSON 檔案的 runnable
物件中加入 timeout
欄位:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
...
"timeout": "TIMEOUT"
}
]
}
}
]
}
將 TIMEOUT
替換為您要允許可執行檔執行的秒數上限或分數區段。例如:3.5s
。
如果工作為可執行的項目設定 3.5 秒的逾時時間,JSON 設定檔會類似於下列內容:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
},
"timeout": "3.5s"
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
如果可執行的項目超過逾時時間,系統會自動讓該項目失敗,並在作業的狀態事件和記錄中,以結束代碼 50005
表示逾時。如要進一步瞭解逾時問題,請參閱退出代碼 50005 的疑難排解說明文件。