Ce document explique comment limiter la durée d'exécution des tâches et des exécutables en en définissant des délais avant expiration.
Un délai avant expiration spécifie la durée pendant laquelle une tâche ou un exécutable est autorisé s'exécuter. Batch n'autorise pas l'exécution des jobs pendant plus de 14 jours et ne définit pas de délais avant expiration par défaut pour les tâches individuelles et et des exécutables. Par conséquent, une tâche individuelle ou exécutable peut s'exécuter aussi longtemps que 14 jours avant l'échec automatique. Mais, si vos tâches et vos exécutables ne sont pas devant s'exécuter pendant une durée aussi longue, cette configuration peut entraîner des coûts imprévus et des retards. Pour éviter des temps d'exécution excessifs, vous pouvez définir des délais avant expiration pour les tâches et et des exécutables.
Avant de commencer
- Si vous n'avez jamais utilisé Batch auparavant, consultez Premiers pas avec Batch et activez Batch en suivant la les conditions préalables pour les projets et les utilisateurs.
-
Pour obtenir les autorisations nécessaires à la création d'un job, demandez à votre administrateur de vous accorder le rôles IAM suivants:
-
Éditeur de jobs par lot (
roles/batch.jobsEditor
) sur le projet -
Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur le compte de service du job, qui est par défaut le compte de service Compute Engine par défaut
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
-
Éditeur de jobs par lot (
Définir les délais avant expiration
Vous pouvez définir des délais avant expiration pour les exécutables, les tâches ou les deux. Le délai d'inactivité d'une exécutable spécifie la durée d'exécution maximale de cet exécutable. Le délai avant expiration d'une tâche spécifie la durée d'exécution maximale de cette tâche, qui est la somme de tous les temps d'exécution individuels de ses exécutables. Par exemple, si une tâche comporte trois exécutables qui s'exécutent tous en même temps pendant un minute, la durée d'exécution de la tâche est de 3 minutes, et non de 1 minute.
Si vous définissez des délais avant expiration qui se chevauchent, tels qu'un délai avant expiration pour un environnement exécutable et la tâche de l'exécutable : un seul délai avant expiration doit être dépassé pour déclencher en cas d'échec automatique. Par exemple, supposons que vous définissiez le délai avant expiration d'une tâche sur 60 secondes et le délai avant expiration de chacun des exécutables de cette tâche 120 secondes. Ensuite, cet exemple de tâche et tous ses exécutables échouent lorsque que la durée totale d'exécution de ses exécutables dépasse 60 secondes. impossible de déclencher les délais avant expiration de 120 secondes.
Pour choisir le délai d'expiration approprié à définir pour les tâches et les exécutables de votre job, analyser les journaux des tâches similaires que vous précédemment exécutées pour déterminer la durée d'exécution typique des tâches exécutables pour des charges de travail similaires.
Définir un délai d'inactivité pour une tâche
Utiliser la Google Cloud CLI ou l'API REST pour
créer une tâche qui
inclut les
Champ maxRunDuration
dans l'objet taskSpec
du fichier JSON:
{
"taskGroups": [
{
"taskSpec": {
...
"maxRunDuration": "TIMEOUT"
}
}
]
}
Remplacez TIMEOUT
par le nombre maximal de secondes ou
sections fractionnaires pour lesquelles vous souhaitez
autoriser l'exécution de la tâche. Exemple :255s
Une tâche qui définit un délai avant expiration de 255 secondes possède une configuration JSON. fichier semblable à celui-ci:
{
"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 le délai avant expiration d'une tâche est dépassé, la tâche échoue automatiquement et
le délai avant expiration dépassé est indiqué par le code de sortie 50005
dans les
les événements d'état et les journaux. Pour plus d'informations sur les délais avant expiration dépassés, consultez la
documentation de dépannage pour le code de sortie 50005.
Définir un délai d'inactivité pour un exécutable
Utiliser la Google Cloud CLI ou l'API REST pour
créer une tâche qui
inclut les
Champ timeout
dans l'objet runnable
du fichier JSON:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
...
"timeout": "TIMEOUT"
}
]
}
}
]
}
Remplacez TIMEOUT
par le nombre maximal de secondes ou
sections fractionnaires pour lesquelles vous souhaitez autoriser l'exécution de l'exécutable. Exemple : 3.5s
.
Un job qui définit un délai d'expiration de 3,5 secondes pour un exécutable aurait un code de configuration Terraform semblable à celui-ci:
{
"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 le délai avant expiration d'un exécutable est dépassé, celui-ci échoue automatiquement et
le délai avant expiration dépassé est indiqué par le code de sortie 50005
dans les
les événements d'état et les journaux. Pour plus d'informations sur les délais avant expiration dépassés, consultez la
documentation de dépannage pour le code de sortie 50005.
Étape suivante
- Si vous rencontrez des problèmes lors de la création ou de l'exécution d'un job, consultez la section Dépannage.
- Afficher les missions et les tâches
- En savoir plus sur les options de création de tâches
- Découvrez comment analyser une tâche à l'aide de journaux.