En este documento, se describe cómo limitar los tiempos de ejecución de las tareas y los elementos ejecutables configurando tiempos de espera. Como alternativa, si deseas que un elemento ejecutable finalice en cuanto termine de ejecutarse cada elemento ejecutable de su tarea, usa un elemento ejecutable en segundo plano.
Un tiempo de espera especifica la cantidad de tiempo que se puede ejecutar una tarea o un elemento ejecutable. Batch no permite que los trabajos se ejecuten durante más de 14 días ni establece tiempos de espera predeterminados para tareas individuales ni ejecutables. Por lo tanto, una tarea o un elemento ejecutable individuales pueden ejecutarse hasta 14 días antes de que se produzca una falla automática. Sin embargo, si no se diseñó que las tareas y los elementos ejecutables se ejecuten durante tanto tiempo, esta configuración podría causar costos y demoras inesperados. Para evitar tiempos de ejecución excesivos, puedes establecer tiempos de espera para las tareas y los elementos ejecutables.
Antes de comenzar
- Si nunca usaste Batch, consulta Cómo comenzar a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
-
Para 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 la 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
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
-
Editor de trabajos por lotes (
Establece tiempos de espera
Puedes establecer tiempos de espera para elementos ejecutables, tareas o ambos. El tiempo de espera de un elemento ejecutable especifica el tiempo de ejecución máximo de ese elemento. El tiempo de espera de una tarea especifica el tiempo de ejecución máximo de esa tarea, que es la suma de todos los tiempos de ejecución individuales de sus ejecutables. Por ejemplo, si una tarea tiene 3 elementos 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 estableces tiempos de espera superpuestos, como un tiempo de espera para un elemento ejecutable y la tarea del elemento ejecutable, solo se debe exceder un tiempo de espera para activar el error automático. Por ejemplo, supongamos que estableces el tiempo de espera de una tarea en 60 segundos y el tiempo de espera de cada uno de los elementos ejecutables de esa tarea en 120 segundos. Luego, esta tarea de ejemplo y todos sus elementos ejecutables fallan cuando la suma de los tiempos de ejecución de sus elementos ejecutables supera los 60 segundos, y es imposible activar los tiempos de espera de 120 segundos.
Para elegir el tiempo de espera adecuado que se establecerá para las tareas y los elementos ejecutables de tu trabajo, analiza los registros de trabajos similares que ejecutaste anteriormente para determinar el tiempo de ejecución típico de las tareas y los elementos ejecutables para cargas de trabajo similares.
Cómo establecer el tiempo de espera de una tarea
Usa Google Cloud CLI o la API de REST para
crear una tarea 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 fraccionarias durante los 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 de 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 del código de salida 50005.
Establece un tiempo de espera para un elemento ejecutable
Usa Google Cloud CLI o la API de REST para
crear una tarea 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 fraccionarias durante los que deseas permitir que se ejecute el elemento ejecutable. Por ejemplo, 3.5s
Un trabajo que establece un tiempo de espera de 3.5 segundos para un elemento 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 de un elemento ejecutable, este 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 de la tarea. Para obtener más información sobre los tiempos de espera excedidos, consulta la documentación de solución de problemas del código de salida 50005.
¿Qué sigue?
- Si tienes problemas para crear o ejecutar una tarea, consulta Solución de problemas.
- Ver trabajos y tareas.
- Obtén más información sobre las opciones de creación de trabajos.
- Obtén más información para analizar un trabajo con registros.