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

In diesem Dokument wird beschrieben, wie Sie die Laufzeiten von Tasks und Runnables begrenzen, indem Sie Zeitüberschreitungen festlegen.

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 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

  1. 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.
  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 Runnables, 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 Laufzeit für diese Aufgabe an. also die Summe aller einzelnen Laufzeiten seiner 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 für ein ausführbares und ausgeführt werden soll. Dann muss nur ein Zeitlimit überschritten werden, automatisch fehlgeschlagen. 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 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 Bruchteilen von Sekunden, für die die Aufgabe 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 ü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 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 überschrittenen Zeitüberschreitungen finden Sie in der Fehlerbehebung für den Exit-Code 50005.

Nächste Schritte