Ausführungszeiten für Tasks und Runnables mithilfe von Zeitlimits begrenzen

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

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