本文档介绍了如何通过 超时设置
超时用于指定允许任务或处于就绪状态的时间 运行。 Batch 不允许作业运行时间超过 14 天 而不会为个别任务设置默认超时 Runnable因此,单个任务或可运行状态的运行时长 自动失败前 14 天。但是,如果您的任务和可运行对象 那么此配置可能会导致意外费用 和延误情况为避免运行时间过长,您可以为任务和 Runnable
准备工作
- 如果您以前没有使用过 Batch,请参阅 Batch 使用入门 并通过填写 针对项目和用户的前提条件。
-
如需获取创建作业所需的权限, 请让管理员授予您 以下 IAM 角色:
-
Batch Job Editor (
roles/batch.jobsEditor
) 针对项目 -
Service Account User (
roles/iam.serviceAccountUser
) 服务账号用户 针对作业的服务账号,该账号默认为默认 Compute Engine 服务账号
如需详细了解如何授予角色,请参阅管理访问权限。
-
Batch Job Editor (
设置超时
您可以为可运行对象和/或任务设置超时。超时的 runnable 指定该可运行对象的最长运行时间。 任务的超时指定该任务的最长运行时间, 它是其可运行项的所有单独运行时间的总和。 例如,如果某个任务有 3 个可运行对象,并且这些对象有 1 个 分钟,则任务的运行时间为 3 分钟,而不是 1 分钟。
如果您设置了重叠的超时(例如,同时为可运行对象和 则只需超过一次超时即可触发 系统会自动失败。例如,假设您将任务的超时时间设为 60 秒以及该任务的每个可运行对象的超时 120 秒。然后,此示例任务及其所有可运行项会在 其可运行资源的运行时间之和超过 60 秒,并且 无法触发 120 秒的超时。
如需为作业的任务和可运行对象选择适当的超时设置, 分析您执行的类似作业的日志 以确定任务的典型运行时间,并 用于类似工作负载的可运行对象
为任务设置超时
使用 Google Cloud CLI 或 REST API 执行以下操作:
创建作业
包含
maxRunDuration
个字段
在 JSON 文件的 taskSpec
对象中:
{
"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 执行以下操作:
创建作业
包含
timeout
个字段
在 JSON 文件的 runnable
对象中:
{
"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 的问题排查文档。