Laufzeiten für Aufgaben und ausführbare Dateien mit Zeitüberschreitungen begrenzen

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

  1. 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.
  2. Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Jobs benötigen:

    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.

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