In diesem Dokument wird beschrieben, wie Sie die Laufzeiten von Tasks und Runnables begrenzen, indem Sie Zeitüberschreitungen festlegen.
Ein timeout gibt an, wie lange eine Aufgabe oder eine ausführbare Datei zulässig ist. ausgeführt werden soll. Im Batch dürfen Jobs nicht länger als 14 Tage ausgeführt werden und legt keine Standardzeitüberschreitungen für einzelne Aufgaben und Runnables. Folglich kann eine einzelne Aufgabe oder ein Runnable so lange laufen, 14 Tage vor dem automatischen Fehler. Wenn Ihre Aufgaben und Runnables jedoch nicht ausgeführt werden soll, kann diese Konfiguration zu unerwarteten Kosten führen und Verzögerungen. Um übermäßige Ausführungszeiten zu vermeiden, können Sie Zeitlimits für Aufgaben und Runnables.
Hinweise
- Wenn Sie Batch zum ersten Mal verwenden, lesen Sie Erste Schritte mit Batch und aktivieren Sie Batch, indem Sie den Voraussetzungen für Projekte und Nutzer.
-
Um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Jobs benötigen, bitten Sie Ihren Administrator, Ihnen folgenden IAM-Rollen:
-
Batch-Job-Editor (
roles/batch.jobsEditor
) für das Projekt -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) für das Dienstkonto des Jobs, das standardmäßig das Compute Engine-Standarddienstkonto ist
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
-
Batch-Job-Editor (
Zeitlimits festlegen
Sie können Zeitlimits für Runnables, Aufgaben oder beides festlegen. Das Zeitlimit für eine runnable gibt die maximale Laufzeit für dieses Runnable an. Das Zeitlimit für eine Aufgabe gibt die maximale Laufzeit für diese Aufgabe an. also die Summe aller einzelnen Laufzeiten seiner Runnables. Wenn eine Aufgabe beispielsweise drei Runnables hat, die alle gleichzeitig für 1 Minute ausgeführt werden, Minute, dann beträgt die Ausführungszeit der Aufgabe 3 Minuten und nicht 1 Minute.
Wenn Sie sich überschneidende Zeitlimits festlegen, z. B. ein Zeitlimit für ein ausführbares und ausgeführt werden soll. Dann muss nur ein Zeitlimit überschritten werden, automatisch fehlgeschlagen. Angenommen, Sie setzen das Zeitlimit einer Aufgabe auf 60 Sekunden und das Zeitlimit aller Runnables dieser Aufgabe 120 Sekunden. Dann schlagen diese Beispielaufgabe und alle zugehörigen Runnables fehl, wenn der die Summe der Laufzeiten seiner Runnables 60 Sekunden überschreitet und die 120-Sekunden-Zeitüberschreitungen nicht ausgelöst werden.
So wählen Sie das geeignete Zeitlimit für die Tasks und Runnables Ihres Jobs aus: Analysieren Sie die Protokolle ähnlicher Jobs, die Sie die zuvor ausgeführt wurden, um die typische Laufzeit für die Aufgaben zu bestimmen. Runnables für ähnliche Arbeitslasten.
Zeitlimit für eine Aufgabe festlegen
Verwenden Sie die Google Cloud CLI oder REST API, um
einen Job erstellen, der
enthält die
Feld „maxRunDuration
“
im taskSpec
-Objekt der JSON-Datei:
{
"taskGroups": [
{
"taskSpec": {
...
"maxRunDuration": "TIMEOUT"
}
}
]
}
Ersetzen Sie TIMEOUT
durch die maximale Anzahl von Sekunden oder
Teilabschnitte, für die die Task ausgeführt werden soll. Beispiel: 255s
.
Ein Job, der ein Zeitlimit von 255 Sekunden für eine Aufgabe festlegt, hat eine JSON-Konfiguration -Datei ähnlich wie diese:
{
"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"
}
}
Wenn das Zeitlimit für eine Aufgabe überschritten wird, schlägt die Aufgabe automatisch fehl und
Das überschrittene Zeitlimit wird durch den Exit-Code 50005
in der
Statusereignisse und Protokolle. Weitere Informationen zu Zeitüberschreitungen finden Sie in der
Dokumentation zur Fehlerbehebung für den Exit-Code 50005
Zeitlimit für ausführbares Element festlegen
Verwenden Sie die Google Cloud CLI oder REST API, um
einen Job erstellen, der
enthält die
Feld „timeout
“
im runnable
-Objekt der JSON-Datei:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
...
"timeout": "TIMEOUT"
}
]
}
}
]
}
Ersetzen Sie TIMEOUT
durch die maximale Anzahl von Sekunden oder
Teilabschnitte, für die das Runable ausgeführt werden soll. Beispiel: 3.5s
Ein Job, der ein Zeitlimit von 3,5 Sekunden für ein Runnable festlegt, hat eine JSON-Datei. wie diese aussieht:
{
"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"
}
}
Wenn das Zeitlimit für ein Runnable überschritten wird, schlägt das Runnable automatisch fehl und
Das überschrittene Zeitlimit wird durch den Exit-Code 50005
in der
Statusereignisse und Protokolle. Weitere Informationen zu Zeitüberschreitungen finden Sie in der
Dokumentation zur Fehlerbehebung für den Exit-Code 50005
Nächste Schritte
- Wenn beim Erstellen oder Ausführen eines Jobs Probleme auftreten, lesen Sie den Abschnitt Fehlerbehebung.
- Aufträge und Aufgaben ansehen
- Weitere Informationen zu Optionen für die Joberstellung
- Job mithilfe von Logs analysieren