Fehlerbehebung

Auf dieser Seite erfahren Sie, wie Sie Probleme mit Batch beheben.

Wenn Sie einen Job beheben möchten, für den Sie keine Fehlermeldung erhalten, prüfen Sie, ob der Jobverlauf Fehlermeldungen enthält. Sehen Sie sich dazu Statusereignisse an, bevor Sie dieses Dokument durchgehen.

Weitere Informationen zur Fehlerbehebung bei einem Job finden Sie in den folgenden Dokumenten:

Fehler bei der Joberstellung

Wenn Sie einen Job nicht erstellen können, liegt dies möglicherweise an einem der Fehler in diesem Abschnitt.

Unzureichendes Kontingent

Problem

Wenn Sie versuchen, einen Job zu erstellen, tritt eines der folgenden Probleme auf:

  • Wenn der Job den Status QUEUED hat, wird das folgende Problem im Feld statusEvents angezeigt:

    Quota checking process decides to delay scheduling for the job JOB_UID due to inadequate quotas [Quota: QUOTA_NAME, limit: QUOTA_LIMIT, usage: QUOTA_CURRENT_USAGE, wanted: WANTED_QUOTA.].
    

    Dieses Problem weist darauf hin, dass der Job verzögert wurde, da die aktuelle Nutzung (QUOTA_USAGE) und das Limit (QUOTA_LIMIT) des Kontingents QUOTA_NAME die angeforderte Nutzung des Jobs (WANT_QUOTA) verhindert haben.

  • Wenn sich der Job im Status QUEUED, SCHEDULED oder FAILED befindet, wird im Feld statusEvents eines der folgenden Probleme angezeigt:

    RESOURCE_NAME creation failed:
    Quota QUOTA_NAME exceeded. Limit: QUOTA_LIMIT in region REGION
    
    RESOURCE_NAME creation failed:
    Quota QUOTA_NAME exceeded. Limit: QUOTA_LIMIT in zone ZONE
    

    Dieses Problem weist darauf hin, dass das Erstellen einer Ressource fehlgeschlagen ist, weil die Anfrage Ihr Kontingent von QUOTA_NAME überschritten hat, das am angegebenen Standort ein Limit von QUOTA_LIMIT hat.

Lösung

So beheben Sie das Problem:

  • Wenn der Job verzögert wurde, warten Sie, bis ein größeres Kontingent freigegeben wurde.

  • Wenn der Job aufgrund eines unzureichenden Kontingents fehlgeschlagen ist oder die Verzögerungen weiterhin bestehen, versuchen Sie, ein unzureichendes Kontingent zu verhindern. Gehen Sie dazu so vor:

    • Erstellen Sie Jobs, die weniger von diesem Kontingent oder ein anderes Kontingent verbrauchen. Geben Sie beispielsweise einen anderen zulässigen Standort oder Ressourcentyp für den Job an oder teilen Sie Ihre Kontingentnutzung auf zusätzliche Projekte auf.

    • Fordern Sie ein höheres Kontingentlimit für Ihr Projekt von Google Cloud an.

Weitere Informationen finden Sie unter Batchkontingente und -limits und Mit Kontingenten arbeiten.

Unzureichende Berechtigungen zum Verwenden des Dienstkontos

Problem

Das folgende Problem tritt auf, wenn Sie versuchen, einen Job zu erstellen:

  • Wenn für den Job keine Instanzvorlage verwendet wird, tritt das Problem so auf:

    caller does not have access to act as the specified service account: SERVICE_ACCOUNT_NAME
    
  • Wenn für den Job eine Instanzvorlage verwendet wird, tritt das Problem so auf:

    Error: code - CODE_SERVICE_ACCOUNT_MISMATCH, description - The service account specified in the instance template INSTANCE_TEMPLATE_SERVICE_ACCOUNT doesn't match the service account specified in the job JOB_SERVICE_ACCOUNT for JOB_UID, project PROJECT_NUMBER
    

Dieses Problem tritt normalerweise auf, wenn der Nutzer, der den Job erstellt, nicht genügend Berechtigungen hat, um als Dienstkonto des Jobs zu fungieren, das von der Berechtigung iam.serviceAccounts.actAs gesteuert wird.

Lösung

So beheben Sie das Problem:

  1. Wenn für den Job eine Instanzvorlage verwendet wird, prüfen Sie, ob das in der Instanzvorlage angegebene Dienstkonto mit dem in der Definition des Jobs angegebenen Dienstkonto übereinstimmt.
  2. Achten Sie darauf, dass dem Nutzer, der den Job erstellt, die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser) für das für den Job angegebene Dienstkonto zugewiesen wurde. Weitere Informationen findest du unter Zugriff verwalten.
  3. Erstellen Sie den Job neu.

Wiederkehrende Netzwerke

Problem

Das folgende Problem tritt auf, wenn Sie versuchen, einen Job zu erstellen:

Networks must be distinct for NICs in the same InstanceTemplate

Dieses Problem tritt auf, weil Sie das Netzwerk für einen Job mehrmals angegeben haben.

Lösung

Um das Problem zu beheben, erstellen Sie den Job neu und geben Sie das Netzwerk mit einer der folgenden Optionen an:

Weitere Informationen finden Sie unter Netzwerk für einen Job angeben.

Ungültiges Netzwerk für VPC Service Controls

Problem

Das folgende Problem tritt auf, wenn Sie versuchen, einen Job zu erstellen:

no_external_ip_address field is invalid. VPC Service Controls is enabled for the project, so external ip address must be disabled for the job. Please set no_external_ip_address field to be true

Lösung

Dieses Problem tritt auf, weil Sie versuchen, einen Job mit VMs mit externen IP-Adressen in einem VPC Service Controls-Dienstperimeter zu erstellen und auszuführen.

Erstellen Sie einen Job, der den externen Zugriff für alle VMs blockiert, um das Problem zu beheben.

Weitere Informationen zum Konfigurieren des Netzwerks für einen Job in einem VPC Service Controls-Dienstperimeter finden Sie unter VPC Service Controls mit Batch verwenden.

Fehler bei Jobfehlern

Wenn ein Job nicht richtig ausgeführt wird oder aus unklaren Gründen fehlgeschlagen ist, kann dies an einem der Fehler in diesem Abschnitt oder an einem der Exit-Codes im folgenden Abschnitt Fehler-Exit-Codes für Aufgaben liegen.

Keine Logs in Cloud Logging

Problem

Sie müssen einen Job debuggen, aber in Cloud Logging werden keine Logs für den Job angezeigt.

Dieses Problem tritt häufig aus folgenden Gründen auf:

  • Die Cloud Logging API ist für Ihr Projekt nicht aktiviert. Auch wenn Sie alles andere für die Logs eines Jobs richtig konfigurieren, werden keine Logs generiert, wenn der Dienst für Ihr Projekt nicht aktiviert ist.
  • Das Dienstkonto des Jobs ist nicht zum Schreiben von Logs berechtigt. Ohne ausreichende Berechtigungen können für einen Job keine Logs erstellt werden.
  • Der Job wurde nicht zum Erstellen von Logs konfiguriert. Damit Logs in Cloud Logging erstellt werden können, muss Cloud Logging für einen Job aktiviert sein. Die Runnables des Jobs sollten außerdem so konfiguriert sein, dass alle Informationen, die in Logs angezeigt werden sollen, in die Standardausgabestreams (stdout) und Standardfehlerstreams (stderr) geschrieben werden. Weitere Informationen finden Sie unter Job mithilfe von Logs analysieren.
  • Tasks wurden nicht ausgeführt. Logs können erst erstellt werden, wenn Aufgaben Ressourcen zugewiesen wurden und die Ausführung gestartet wurde.
  • Cloud Logging wurde so konfiguriert, dass die Logs des Jobs automatisch ausgeschlossen werden. Logs aus Batchjobs können nicht angezeigt werden, wenn Sie Ausschlussfilter für Cloud Logging konfiguriert haben, die dazu führen, dass Logs von Batchjobs ausgeschlossen werden.

Lösung

So beheben Sie das Problem:

  1. Deaktivieren Sie alle aktuellen Ausschlussfilter für Cloud Logging, damit die Logs nicht automatisch aus Cloud Logging ausgeschlossen wurden.
  2. Achten Sie darauf, dass die Cloud Logging API für Ihr Projekt aktiviert ist.
  3. Achten Sie darauf, dass das Dienstkonto für den Job die IAM-Rolle Logautor (roles/logging.logWriter) hat. Weitere Informationen finden Sie unter Batch für ein Projekt aktivieren.
  4. Rufen Sie die Details des Jobs über die gcloud CLI oder Batch API auf. Die Jobdetails können Ihnen helfen zu verstehen, warum der Job keine Logs erstellt hat, und können Informationen enthalten, die Sie aus den Logs erhalten wollten. Beispiel:
    1. Prüfen Sie im Feld logsPolicy des Jobs, ob Logging aktiviert ist.
    2. Im Feld status des Jobs sehen Sie, ob der Job erfolgreich ausgeführt wurde.

Nachdem Sie Änderungen vorgenommen haben, erstellen Sie den Job neu und warten Sie, bis er abgeschlossen ist, bevor Sie die Logs prüfen.

Keine Berichterstellung zum Dienst-Agent

Problem

Das folgende Problem wird im Feld statusEvents für einen Job angezeigt, der nicht ordnungsgemäß ausgeführt wird oder vor dem Erstellen von VMs fehlgeschlagen ist:

No VM has agent reporting correctly within time window NUMBER_OF_SECONDS seconds, VM state for instance VM_NAME is TIMESTAMP,agent,start

Das Problem gibt an, dass keine der VMs eines Jobs an den Batch-Dienst-Agent meldet.

Dieses Problem tritt häufig aus folgenden Gründen auf:

  • Die VMs des Jobs haben nicht die erforderlichen Berechtigungen. Die VMs eines Jobs benötigen bestimmte Berechtigungen, um ihren Status an den Batch-Dienst-Agent zu melden. Sie können diese Berechtigungen für die VMs eines Jobs bereitstellen, indem Sie dem Dienstkonto des Jobs die Rolle "Batch Agent Reporter" (roles/batch.agentReporter) zuweisen.
  • Bei den VMs des Jobs gibt es Netzwerkprobleme. Die VMs eines Jobs benötigen Netzwerkzugriff, um mit dem Batch-Dienst-Agent zu kommunizieren.
  • Die VMs des Jobs verwenden ein veraltetes Batch VM-Betriebssystem-Image oder ein VM-Betriebssystem-Image mit veralteter Batch-Dienst-Agent-Software. Die VMs des Jobs benötigen Software im VM-Betriebssystem-Image, die die aktuellen Abhängigkeiten für die Berichterstellung an den Batch-Dienst-Agent bereitstellt.

Lösung

So beheben Sie das Problem:

  1. Prüfen Sie, ob die VMs des Jobs die erforderlichen Berechtigungen haben, um ihren Status an den Batch-Dienst-Agent zu melden.

    1. Rufen Sie die Details des Jobs mithilfe der gcloud CLI oder Batch API auf, um das Dienstkonto des Jobs zu ermitteln. Wenn kein Dienstkonto aufgeführt ist, verwendet der Job standardmäßig das Compute Engine-Standarddienstkonto.
    2. Prüfen Sie, ob das Dienstkonto des Jobs Berechtigungen für die Rolle „Batch Agent Reporter“ (roles/batch.agentReporter) hat. Weitere Informationen finden Sie unter Zugriff verwalten und Nutzung von Dienstkonten einschränken.

      Verwenden Sie beispielsweise den folgenden Befehl, um dem Compute Engine-Standarddienstkonto die erforderlichen Berechtigungen zu gewähren:

      gcloud projects add-iam-policy-binding PROJECT_ID \
        --role roles/batch.agentReporter \
        --member serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com
      
  2. Prüfen Sie, ob die VMs des Jobs ordnungsgemäßen Netzwerkzugriff haben. Weitere Informationen finden Sie unter Batch-Netzwerkübersicht und Häufige Netzwerkprobleme beheben.

  3. Wenn Sie das VM-Betriebssystem-Image für den Job angegeben haben, prüfen Sie, ob das VM-Betriebssystem-Image derzeit unterstützt wird.

    1. Wenn Sie Cloud Logging für den Job aktiviert haben, können Sie dieses Problem anhand der folgenden Agent-Logs identifizieren (batch_agent_logs). Weitere Informationen finden Sie unter Job mithilfe von Logs analysieren.

      • Protokoll für einen veralteten Softwarefehler des Batch-Dienst-Agents:

        rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_AGENT_VERSION: outdated Batch agent version used.
        

        BATCH_AGENT_VERSION ist die Softwareversion für die Kommunikation mit dem Batch-Dienst-Agent, den der Job verwendet, z. B. cloud-batch-agent_20221103.00_p00.

      • Protokoll für Fehler aufgrund eines veralteten Batch-VM-Betriebssystem-Images:

        rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_VM_OS_IMAGE_NAME: outdated Batch image version.
        

        BATCH_VM_OS_IMAGE_NAME ist die spezifische Version eines VM-Betriebssystem-Images aus Batch, das der Job verwendet, z. B. batch-debian-11-20220909-00-p00.

    2. Sie können dieses Problem mit einem neueren VM-Betriebssystem-Image beheben. Wenn der Job ein benutzerdefiniertes Image verwendet, erstellen Sie das benutzerdefinierte Image anhand der neuesten Version eines unterstützten öffentlichen Images neu.

      Weitere Informationen finden Sie unter Unterstützte VM-Betriebssystem-Images und VM-Betriebssystem-Images ansehen.

  4. Erstellen Sie den Job neu.

Verstoß gegen Einschränkung für externe VM-IP-Adressen

Problem

Das folgende Problem wird im Feld statusEvents für einen fehlgeschlagenen Job angezeigt:

Instance VM_NAME creation failed: Constraint constraints/compute.vmExternalIpAccess violated for project PROJECT_NUMBER.
Add instance VM_NAME to the constraint to use external IP with it.

Dieses Problem tritt auf, weil Ihr Projekt, Ihr Ordner oder Ihre Organisation die Einschränkung der Organisationsrichtlinie compute.vmExternalIpAccess so festgelegt hat, dass nur VMs auf der Zulassungsliste externe IP-Adressen verwenden können.

Lösung

Erstellen Sie den Job neu und führen Sie einen der folgenden Schritte aus, um das Problem zu beheben:

Verstoß gegen Einschränkung für vertrauenswürdige Images

Problem

Das folgende Problem wird im Feld statusEvents für einen fehlgeschlagenen Job angezeigt:

Instance VM_NAME creation failed: Constraint constraints/compute.trustedImageProjects violated for project PROJECT_ID. Use of images from project batch-custom-image is prohibited.

Lösung

Dieses Problem tritt auf, weil in Ihrem Projekt die Richtlinieneinschränkung für vertrauenswürdige Images (compute.trustedImageProjects) so festgelegt wurde, dass Images aus Batch, die sich im Image-Projekt batch-custom-image befinden, nicht zulässig sind.

Führen Sie mindestens einen der folgenden Schritte aus, um das Problem zu beheben:

  • Erstellen Sie den Job neu, um ein VM-Betriebssystem-Image anzugeben, das bereits durch die Einschränkung der Richtlinie für vertrauenswürdige Images zugelassen ist.
  • Bitten Sie Ihren Administrator, das Ändern der Richtlinieneinschränkung für vertrauenswürdige Images so zu erlauben, dass VM-Betriebssystem-Images aus dem Projekt batch-custom-image-Images zugelassen werden. Eine Anleitung dazu finden Sie unter Zugriff auf VM-Betriebssystem-Images für Batch steuern.

Job fehlgeschlagen bei Verwendung einer Instanzvorlage

Problem

Das folgende Problem wird im Feld statusEvents für einen fehlgeschlagenen Job angezeigt, bei dem eine Instanzvorlage verwendet wird:

INVALID_FIELD_VALUE,BACKEND_ERROR

Dieses Problem tritt aufgrund unklarer Probleme mit der Instanzvorlage des Jobs auf.

Lösung

So beheben Sie das Problem:

  1. Erstellen Sie eine verwaltete Instanzgruppe mithilfe der Instanzvorlage und prüfen Sie mit weiteren Details, ob Fehler auftreten.
  2. Optional: Weitere Informationen finden Sie unter Vorgang mit langer Ausführungszeit, mit dem die verwaltete Instanzgruppe in der Google Cloud Console erstellt wird.

    Zu Compute Engine Operations

Exit-Codes für Aufgabenfehler

Wenn eine bestimmte Aufgabe in einem Job fehlschlägt, gibt sie einen Exit-Code ungleich null zurück. Je nachdem, wie Sie das Feld ignoreExitStatus konfigurieren, kann eine fehlgeschlagene Aufgabe dazu führen, dass ein Job fehlschlägt.

Zusätzlich zu den Exit-Codes, die Sie in einem Runnable definieren, hat ein Batch mehrere reservierte Exit-Codes, einschließlich der folgenden.

VM-Beendigung (50001)

Problem

Das folgende Problem wird im Feld statusEvents für einen Job angezeigt:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to Spot Preemption with exit code 50001.

Dieses Problem tritt auf, wenn eine Spot-VM für den Job während der Laufzeit vorzeitig beendet wird.

Lösung

Führen Sie einen der folgenden Schritte aus, um das Problem zu beheben:

  • Wiederholen Sie die Aufgabe entweder mithilfe von automatisierten Aufgabenwiederholungen oder manuell noch einmal.
  • Verwenden Sie stattdessen VMs mit dem Standardbereitstellungsmodell, um zu gewährleisten, dass es nicht vorzeitig beendet wird.

Zeitlimit für VM-Berichterstellung (50002)

Problem

Das folgende Problem wird im Feld statusEvents für einen Job angezeigt:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to Batch no longer receives VM updates with exit code 50002.

Dieses Problem tritt auf, wenn eine VM im Back-End aufgrund einer Zeitüberschreitung keine Updates mehr für den Job erhält.

Lösung

Zum Beheben dieses Problems wiederholen Sie die Aufgabe entweder mithilfe von automatisierten Aufgabenwiederholungen oder manuell noch einmal.

VM während der Ausführung neu gestartet (50003)

Problem

Das folgende Problem wird im Feld statusEvents für einen Job angezeigt:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to VM is rebooted during task execution with exit code 50003.

Dieses Problem tritt auf, wenn eine VM für einen Job während der Laufzeit unerwartet neu gestartet wird.

Lösung

Zum Beheben dieses Problems wiederholen Sie die Aufgabe entweder mithilfe von automatisierten Aufgabenwiederholungen oder manuell noch einmal.

VM und Aufgabe reagieren nicht (50004)

Problem

Das folgende Problem wird im Feld statusEvents für einen Job angezeigt:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to tasks cannot be canceled with exit code 50004.

Dieses Problem tritt auf, wenn eine Aufgabe das Zeitlimit für nicht reagierende Anfragen erreicht und nicht abgebrochen werden kann.

Lösung

Zum Beheben dieses Problems wiederholen Sie die Aufgabe entweder mithilfe von automatisierten Aufgabenwiederholungen oder manuell noch einmal.

Aufgabe wird über die maximale Laufzeit ausgeführt (50005)

Problem

Das folgende Problem wird im Feld statusEvents für einen Job angezeigt:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to task runs over the maximum runtime with exit code 50005.

Dieses Problem tritt in den folgenden Fällen auf:

  • Die Ausführung einer Aufgabe überschreitet das im Feld maxRunDuration angegebene Zeitlimit
  • Die Laufzeit eines Runnables überschreitet das im Feld timeout angegebene Zeitlimit

Wenn Sie genau wissen möchten, welches Zeitlimit überschritten wurde, rufen Sie die Logs für den Job auf und suchen Sie nach einem Log, das den Exit-Code 50005 enthält. Das Feld textPayload dieses Logs gibt an, wo und wann das Zeitlimit überschritten wurde.

Lösung

Versuchen Sie, die Gesamtlaufzeit zu prüfen, die von der Task oder dem ausführbaren Element benötigt wird, das das Zeitlimit überschritten hat, um das Problem zu beheben. Führen Sie anschließend einen der folgenden Schritte aus:

  • Wenn Sie diesen Fehler nur gelegentlich erwarten, z. B. bei einer Aufgabe oder einem ausführbaren Objekt mit einer inkonsistenten Laufzeit, können Sie versuchen, den Job neu zu erstellen und ihn so zu konfigurieren, dass Wiederholungen von Aufgaben automatisiert werden, um die Erfolgsquote zu erhöhen.

  • Wenn die Aufgabe oder die ausführbare Datei konsistent und absichtlich mehr Zeit zum Abschluss benötigt, als das aktuelle Zeitlimit zulässt, legen Sie ein längeres Zeitlimit fest.

VM während der Ausführung neu erstellt (50006)

Problem

Das folgende Problem wird im Feld statusEvents für einen Job angezeigt:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to VM is recreated during task execution with exit code 50006.

Dieses Problem tritt auf, wenn eine VM für einen Job während der Laufzeit unerwartet neu erstellt wird.

Lösung

Zum Beheben dieses Problems wiederholen Sie die Aufgabe entweder mithilfe von automatisierten Aufgabenwiederholungen oder manuell noch einmal.

Nächste Schritte