In diesem Dokument wird beschrieben, wie Sie die Laufzeiten von Aufgaben und ausführbaren Elementen durch Festlegen von Zeitüberschreitungen begrenzen. Wenn ein Runnable beendet werden soll, sobald alle anderen Runnables in seiner Aufgabe abgeschlossen sind, verwenden Sie stattdessen ein Background-Runnable.
Ein Zeitlimit gibt an, wie lange eine Aufgabe oder ein Runnable ausgeführt werden darf. In Batch können Jobs nicht länger als 14 Tage ausgeführt werden. Außerdem werden keine Standard-Timeouts für einzelne Aufgaben und Runnables festgelegt. Folglich kann eine einzelne Aufgabe oder ein Runnable bis zu 14 Tage lang ausgeführt werden, bevor es automatisch fehlschlägt. Wenn Ihre Aufgaben und ausführbaren Dateien jedoch nicht so lange ausgeführt werden sollen, kann diese Konfiguration zu unerwarteten Kosten und Verzögerungen führen. Um übermäßige Laufzeiten zu vermeiden, können Sie Zeitlimits für Aufgaben und Runnable-Objekte festlegen.
Hinweise
- Wenn Sie Batch noch nicht verwendet haben, lesen Sie den Abschnitt Erste Schritte mit Batch und aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzer erfüllen.
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Jobs benötigen:
-
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 auf Projekte, Ordner und Organisationen 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 Runnable-Objekte, Aufgaben oder beides festlegen. Das Zeitlimit für ein 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. Das ist die Summe aller einzelnen Laufzeiten der zugehörigen Runnables. Wenn ein Task beispielsweise drei Runnables hat, die alle gleichzeitig eine Minute lang ausgeführt werden, beträgt die Laufzeit des Tasks drei Minuten, nicht eine Minute.
Wenn Sie sich überschneidende Zeitlimits festlegen, z. B. für ein Runnable und die Aufgabe des Runnable, muss nur ein Zeitlimit überschritten werden, um einen automatischen Fehler auszulösen. Angenommen, Sie legen das Zeitlimit einer Aufgabe auf 60 Sekunden und das Zeitlimit der einzelnen Runnable-Objekte dieser Aufgabe auf 120 Sekunden fest. Diese Beispielaufgabe und alle ihre Runnables schlagen fehl, wenn die Summe der Laufzeiten ihrer Runnables 60 Sekunden überschreitet. Die 120-Sekunden-Zeitüberschreitungen können nicht ausgelöst werden.
Um das richtige Zeitlimit für die Aufgaben und Runnables Ihres Jobs festzulegen, analysieren Sie die Logs ähnlicher Jobs, die Sie zuvor ausgeführt haben. So können Sie die typische Laufzeit für die Aufgaben und Runnables für ähnliche Arbeitslasten ermitteln.
Zeitlimit für eine Aufgabe festlegen
Verwenden Sie die Google Cloud CLI oder die REST API, um einen Job zu erstellen, der das maxRunDuration
-Feld im taskSpec
-Objekt der JSON-Datei enthält:
{
"taskGroups": [
{
"taskSpec": {
...
"maxRunDuration": "TIMEOUT"
}
}
]
}
Ersetzen Sie TIMEOUT
durch die maximale Anzahl von Sekunden oder Bruchteilen von Sekunden, die für die Ausführung des Tasks zulässig sind. Beispiel: 255s
.
Für einen Job, bei dem für eine Aufgabe ein Zeitlimit von 255 Sekunden festgelegt wird, würde die JSON-Konfigurationsdatei so aussehen:
{
"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. Das überschrittene Zeitlimit wird durch den Exitcode 50005
in den Statusereignissen und Logs des Jobs angegeben. Weitere Informationen zu überschrittenen Zeitlimits finden Sie in der Dokumentation zur Fehlerbehebung für den Exitcode 50005.
Zeitlimit für ein Runnable festlegen
Verwenden Sie die Google Cloud CLI oder die REST API, um einen Job zu erstellen, der das timeout
-Feld im runnable
-Objekt der JSON-Datei enthält:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
...
"timeout": "TIMEOUT"
}
]
}
}
]
}
Ersetzen Sie TIMEOUT
durch die maximale Anzahl von Sekunden oder Bruchteilen von Sekunden, die das ausführbare Programm ausgeführt werden darf. Beispiel: 3.5s
Für einen Job, der ein Zeitlimit von 3,5 Sekunden für ein Runnable festlegt, würde eine JSON-Konfigurationsdatei ähnlich wie die folgende aussehen:
{
"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. Das überschrittene Zeitlimit wird durch den Exitcode 50005
in den Statusereignissen und Logs des Jobs angegeben. Weitere Informationen zu überschrittenen Zeitlimits finden Sie in der Dokumentation zur Fehlerbehebung für den Exitcode 50005.
Nächste Schritte
- Wenn Probleme beim Erstellen oder Ausführen eines Jobs auftreten, finden Sie weitere Informationen unter Fehlerbehebung.
- Jobs und Aufgaben ansehen
- Weitere Optionen zum Erstellen von Jobs
- Job mithilfe von Logs analysieren