En este documento, se describe cómo limitar los tiempos de ejecución de las tareas y los ejecutables a través de la configuración de tiempos de espera.
Un timeout especifica la cantidad de tiempo que se permite ejecutar una tarea o un ejecutable. El lote no permite que los trabajos se ejecuten durante más de 14 días y no establece tiempos de espera predeterminados para tareas ejecutables y tareas individuales. Por lo tanto, una tarea individual o ejecutable puede ejecutarse hasta 14 días antes de la falla automática. Sin embargo, si tus tareas y ejecutables no están diseñados para ejecutarse durante tanto tiempo, esta configuración puede causar costos y retrasos inesperados. A fin de evitar tiempos de ejecución excesivos, puedes establecer tiempos de espera para las tareas y los ejecutables.
Antes de comenzar
- Si no has usado Batch antes, revisa Comienza a usar Batch y completa los requisitos previos para los proyectos y usuarios a fin de habilitar Batch.
-
Si quieres obtener los permisos que necesitas para crear un trabajo, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Editor de trabajos por lotes (
roles/batch.jobsEditor
) en el proyecto -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo, que de forma predeterminada es la cuenta de servicio predeterminada de Compute Engine
Si quieres obtener más información para otorgar roles, consulta Administra el acceso.
Es posible que también puedas obtener los permisos necesarios a través de los roles personalizados o de otros roles predefinidos.
-
Editor de trabajos por lotes (
Establece tiempos de espera
Puedes establecer tiempos de espera para ejecutables, tareas o ambos. El tiempo de espera de un ejecutable especifica el tiempo de ejecución máximo de ese ejecutable. El tiempo de espera de una tarea especifica el tiempo de ejecución máximo para esa tarea, que es la suma de todos los tiempos de ejecución individuales de sus ejecutables. Por ejemplo, si una tarea tiene 3 ejecutables que se ejecutan al mismo tiempo durante 1 minuto, el tiempo de ejecución de la tarea es de 3 minutos, no de 1 minuto.
Si configuras tiempos de espera superpuestos, como un tiempo de espera para una tarea ejecutable y otra ejecutable, solo se debe exceder un tiempo de espera para activar una falla automática. Por ejemplo, supongamos que estableces el tiempo de espera de una tarea en 60 segundos y el tiempo de espera de cada una de las ejecutables de esa tarea en 120 segundos. Luego, esta tarea de ejemplo y todos sus ejecutables fallan cuando la suma de los tiempos de ejecución de sus ejecutables supera los 60 segundos y no es posible activar los tiempos de espera de 120 segundos.
A fin de elegir el tiempo de espera apropiado que se configurará para las tareas y los ejecutables del trabajo, analiza los registros de trabajos similares que ya ejecutaste con anterioridad a fin de determinar el tiempo de ejecución típico de las tareas y los ejecutables para cargas de trabajo similares.
Cómo establecer el tiempo de espera para una tarea
Usa Google Cloud CLI o la API de REST para
crear un trabajo que
incluya el
campo maxRunDuration
en el objeto taskSpec
del archivo JSON:
{
"taskGroups": [
{
"taskSpec": {
...
"maxRunDuration": "TIMEOUT"
}
}
]
}
Reemplaza TIMEOUT
por la cantidad máxima de segundos o secciones fraccionadas para las que deseas permitir que se ejecute la tarea. Por ejemplo, 255s
Un trabajo que establece un tiempo de espera de 255 segundos para una tarea tendría un archivo de configuración JSON similar al siguiente:
{
"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"
}
}
Si se excede el tiempo de espera para una tarea, esta falla automáticamente y el tiempo de espera excedido se indica con el código de salida 50005
en los eventos y registros de estado del trabajo. Para obtener más información sobre los tiempos de espera excedidos, consulta la documentación de solución de problemas para el código de salida 50005.
Establece el tiempo de espera para un ejecutable
Usa Google Cloud CLI o la API de REST para
crear un trabajo que
incluya el
campo timeout
en el objeto runnable
del archivo JSON:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
...
"timeout": "TIMEOUT"
}
]
}
}
]
}
Reemplaza TIMEOUT
por la cantidad máxima de segundos o secciones fraccionadas para las que deseas permitir que se ejecute el ejecutable. Por ejemplo, 3.5s
Un trabajo que establece un tiempo de espera de 3.5 segundos para un ejecutable tendría un archivo de configuración JSON similar al siguiente:
{
"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"
}
}
Si se supera el tiempo de espera para un ejecutable, este falla automáticamente y el código de salida 50005
indica el tiempo de espera excedido en los eventos y registros del estado del trabajo. Para obtener más información sobre los tiempos de espera excedidos, consulta la documentación de solución de problemas para el código de salida 50005.
¿Qué sigue?
- Si tienes problemas para crear o ejecutar un trabajo, consulta Solución de problemas.
- Visualiza trabajos y tareas.
- Obtén más información sobre las opciones de creación de trabajos.
- Aprende a analizar un trabajo mediante registros.