In diesem Dokument wird beschrieben, wie Sie die Ausführungszeiten von Aufgaben und ausführbaren Elementen durch Festlegen von Zeitüberschreitungen begrenzen.
Ein Zeitlimit gibt an, wie lange eine Aufgabe oder ein ausführbares Programm ausgeführt werden darf. Mit Batch können Jobs nicht länger als 14 Tage ausgeführt werden und es werden keine Standardzeitüberschreitungen für einzelne Aufgaben und ausführbare Dateien festgelegt. Daher kann eine einzelne Aufgabe oder ein ausführbares Programm 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 ausführbare Dateien festlegen.
Hinweise
- Wenn Sie Batch noch nicht verwendet haben, lesen Sie den Hilfeartikel Batch-Dateien erstellen und ausführen 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-Bearbeiter (
roles/batch.jobsEditor
) für das Projekt -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) im 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-Bearbeiter (
Zeitlimits festlegen
Sie können Zeitlimits für ausführbare Dateien, Aufgaben oder beides festlegen. Das Zeitlimit für ein ausführbares Element gibt die maximale Ausführungszeit für dieses ausführbare Element an. Das Zeitlimit für eine Aufgabe gibt die maximale Ausführungszeit für diese Aufgabe an. Das ist die Summe aller einzelnen Ausführungszeiten ihrer Runnables. Wenn eine Aufgabe beispielsweise drei ausführbare Elemente enthält, die alle gleichzeitig eine Minute lang ausgeführt werden, beträgt die Ausführungszeit der Aufgabe 3 Minuten und nicht 1 Minute.
Wenn Sie sich überschneidende Zeitlimits festlegen, z. B. ein Zeitlimit sowohl für ein ausführbares Programm als auch für die Aufgabe des ausführbaren Programms, muss nur ein Zeitlimit überschritten werden, um einen automatischen Fehler auszulösen. Angenommen, Sie legen für eine Aufgabe ein Zeitlimit von 60 Sekunden und für jedes ausführbare Element dieser Aufgabe ein Zeitlimit von 120 Sekunden fest. In diesem Fall schlagen diese Beispielaufgabe und alle zugehörigen ausführbaren Programme fehl, wenn die Summe der Laufzeiten der ausführbaren Programme 60 Sekunden überschreitet. Die Zeitlimits von 120 Sekunden können dann nicht ausgelöst werden.
Um die richtige Zeitüberschreitung für die Aufgaben und ausführbaren Dateien Ihres Jobs festzulegen, analysieren Sie die Protokolle ähnlicher Jobs, die Sie zuvor ausgeführt haben, um die typische Ausführungszeit für die Aufgaben und ausführbaren Dateien für ähnliche Arbeitslasten zu ermitteln.
Zeitlimit für eine Aufgabe festlegen
Verwenden Sie die Google Cloud CLI oder die REST API, um einen Job zu erstellen, der das Feld maxRunDuration
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, für die die Aufgabe ausgeführt werden soll. Beispiel: 255s
.
Für einen Job, der eine Zeitüberschreitung von 255 Sekunden für eine Aufgabe festlegt, würde eine JSON-Konfigurationsdatei in etwa 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 die Zeitüberschreitung für eine Aufgabe überschritten wird, schlägt die Aufgabe automatisch fehl und die Zeitüberschreitung wird in den Statusereignissen und ‑protokollen des Jobs durch den Exit-Code 50005
angezeigt. Weitere Informationen zu überschrittenen Zeitüberschreitungen finden Sie in der Fehlerbehebung für den Exit-Code 50005.
Zeitlimit für ein ausführbares Element festlegen
Verwenden Sie die Google Cloud CLI oder die REST API, um einen Job zu erstellen, der das Feld timeout
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, für die das ausführbare Programm ausgeführt werden soll. Beispiel: 3.5s
Eine JSON-Konfigurationsdatei für einen Job, der eine Zeitüberschreitung von 3,5 Sekunden für ein ausführbares Programm festlegt, würde in etwa 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."
},
"timeout": "3.5s"
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Wenn das Zeitlimit für ein ausführbares Programm überschritten wird, schlägt es automatisch fehl und das Zeitlimit wird in den Statusereignissen und ‑protokollen des Jobs durch den Exit-Code 50005
angezeigt. Weitere Informationen zu überschrittenen Zeitüberschreitungen finden Sie in der Fehlerbehebung für den Exit-Code 50005.
Nächste Schritte
- Wenn beim Erstellen oder Ausführen eines Jobs Probleme auftreten, lesen Sie den Hilfeartikel Fehlerbehebung.
- Aufgaben und Jobs ansehen
- Weitere Informationen zu Optionen zum Erstellen von Jobs
- Weitere Informationen zum Analysieren eines Jobs mithilfe von Protokollen