Auf dieser Seite wird erläutert, wie Sie häufige Ursachen von langsamen oder hängenden Dataflow-Batchjobs beheben können.
Wenn der Batchjob langsam läuft oder hängen geblieben ist, verwenden Sie den Tab Ausführungsdetails, um weitere Informationen zum Job zu erhalten und die Phase oder den Worker zu ermitteln, der den Engpass verursacht.
Ursache ermitteln
Prüfen Sie, ob beim Starten des Workers Probleme auftreten. Weitere Informationen finden Sie unter Fehler beim Synchronisieren des Pods.
Sehen Sie im Log job-message nach dem folgenden Logeintrag, um zu prüfen, ob der Job mit der Verarbeitung von Daten begonnen hat:
All workers have finished the startup processes and began to receive work requests
Wenn Sie die Leistung verschiedener Jobs vergleichen möchten, müssen das Volumen der Eingabedaten, die Worker-Konfiguration, das Autoscaling-Verhalten und die Dataflow Shuffle-Einstellungen identisch sein.
Prüfen Sie die job-message-Logs auf Probleme wie Kontingentbeschränkungen, Probleme mit nicht verfügbaren Artikeln oder aufgebrauchte IP-Adressen.
Vergleichen Sie auf dem Tab Ausführungsdetails den Phasenfortschritt, um Phasen zu ermitteln, die länger gedauert haben.
Suchen Sie nach verbliebenen Fäden. Weitere Informationen finden Sie unter Fehlerbehebung bei Nachzüglern in Batchjobs.
Prüfen Sie die Messwerte für Durchsatz, CPU und Arbeitsspeicherauslastung.
Prüfen Sie die Worker-Logs auf Warnungen und Fehler.
- Wenn die Worker-Logs Fehler enthalten, sehen Sie sich den Stacktrace an. Prüfen Sie, ob der Fehler durch einen Fehler in Ihrem Code verursacht wird.
- Suchen Sie nach Dataflow-Fehlern. Weitere Informationen finden Sie unter Fehlerbehebung bei Dataflow-Fehlern.
- Suchen Sie nach Speichermangelfehlern, die zu einer blockierten Pipeline führen können. Wenn Fehler aufgrund von ungenügendem Arbeitsspeicher angezeigt werden, folgen Sie der Anleitung unter Fehlerbehebung bei Dataflow-Fehlern aufgrund von ungenügendem Arbeitsspeicher.
- Wenn Sie einen langsamen oder hängenden Schritt ermitteln möchten, suchen Sie in den Worker-Logs nach
Operation ongoing
-Meldungen. Sehen Sie sich den Stacktrace an, um zu sehen, wo der Schritt Zeit verbringt. Weitere Informationen finden Sie unter Verarbeitung hängt oder Vorgang läuft.
Wenn Sie Dataflow Shuffle nicht verwenden, prüfen Sie die Shuffler-Logs auf Warnungen und Fehler während des Shuffle-Vorgangs. Wenn Sie einen RPC-Zeitüberschreitungsfehler auf Port 12345 oder 12346 sehen, fehlt in Ihrem Job möglicherweise eine Firewallregel. Weitere Informationen finden Sie unter Firewallregeln für Dataflow.
Wenn Runner v2 aktiviert ist, prüfen Sie die Harness-Logs auf Fehler. Weitere Informationen finden Sie unter Fehlerbehebung für Runner v2.
Nachzügler identifizieren
Ein Nachzügler ist ein Arbeitselement, das relativ zu anderen Arbeitselementen in der Phase langsam ist. Informationen zum Identifizieren und Korrigieren von Nachzüglern finden Sie unter Fehlerbehebung bei Nachzüglern in Batchjobs.
Langsame oder hängende Phasen identifizieren
Verwenden Sie die Ansicht Phasenfortschritt, um langsame oder hängende Phasen zu ermitteln. Längere Balken weisen darauf hin, dass die Phase länger dauert. Verwenden Sie diese Ansicht, um die langsamsten Phasen in Ihrer Pipeline zu ermitteln.
Nachdem Sie die Engpassphase gefunden haben, können Sie die folgenden Schritte ausführen:
- Identifizieren Sie den verzögerten Worker in der Phase.
- Wenn keine verzögerten Worker vorhanden sind, identifizieren Sie den langsamsten Schritt über den Bereich Phaseninformationen. Verwenden Sie diese Informationen, um Kandidaten für die Optimierung von Nutzercode zu identifizieren.
- Verwenden Sie Dataflow-Monitoringmesswerte, um Engpässe bei der Parallelität zu finden.
Verzögerten Worker erkennen
Verwenden Sie die Ansicht Worker-Fortschritt, um einen verzögerten Worker für eine bestimmte Phase zu identifizieren. Diese Ansicht zeigt, ob alle Worker die Arbeit bis zum Ende der Phase verarbeiten oder ob ein einzelner Worker bei einer verzögerten Aufgabe festhängt. Wenn Sie einen verzögerten Worker finden, führen Sie die folgenden Schritte aus:
- Sehen Sie sich die Logdateien für diesen Worker an. Weitere Informationen finden Sie unter Pipelinelogs überwachen und ansehen.
- Sehen Sie sich die CPU-Auslastungsmesswerte und die Details zum Worker-Fortschritt für verzögerte Worker an. Wenn Sie eine ungewöhnlich hohe oder niedrige CPU-Auslastung feststellen, suchen Sie in den Logdateien für diesen Worker nach den folgenden Problemen:
Tools zur Fehlerbehebung
Wenn Sie eine langsame oder hängende Pipeline haben, können Sie mit den folgenden Tools versuchen, das Problem zu diagnostizieren.
- Verwenden Sie Cloud Monitoring für Dataflow, um Vorfälle zu korrelieren und Engpässe zu identifizieren.
- Verwenden Sie zum Überwachen der Pipelineleistung Cloud Profiler.
- Einige Transformationen eignen sich besser für Pipelines mit hohem Volumen als andere. Lognachrichten können eine hängen gebliebene Nutzertransformation in Batch- oder Streamingpipelines identifizieren.
- Weitere Informationen zu hängen gebliebenen Jobs finden Sie unter Dataflow-Jobmesswerte.
Die folgende Liste enthält nützliche Messwerte:
- Der Messwert Rückstand in Byte (
backlog_bytes
) misst die Menge der nicht verarbeiteten Eingabe in Byte pro Phase. Verwenden Sie diesen Messwert, um einen zusammengeführten Schritt zu finden, der keinen Durchsatz hat. Der Messwert der Rückstandselemente (backlog_elements
) misst die Anzahl der nicht verarbeiteten Eingabeelemente für eine Phase. - Der Messwert Verarbeitungsparallelitätsschlüssel (
processing_parallelism_keys
) misst die Anzahl der parallelen Verarbeitungsschlüssel für eine bestimmte Phase der Pipeline in den letzten fünf Minuten. Verwenden Sie diesen Messwert, um Untersuchungen anzustellen:- Sie können das Problem auf bestimmte Phasen eingrenzen und Warnungen zu „heißen“ Schlüsseln wie
A hot key ... was detected
bestätigen. - Suchen Sie nach Durchsatzengpässen aufgrund unzureichender Parallelität. Diese Engpässe können zu langsamen oder hängenden Pipelines führen.
- Sie können das Problem auf bestimmte Phasen eingrenzen und Warnungen zu „heißen“ Schlüsseln wie
- Der Messwert Systemverzögerung (
system_lag
) und der Messwert für die verzögerte Systemverzögerung pro Phase (per_stage_system_lag
) messen die maximale Zeitdauer, für die ein Datenelement verarbeitet wurde oder auf die Verarbeitung gewartet hat. Verwenden Sie diese Messwerte, um ineffiziente Phasen und Engpässe aus Datenquellen zu ermitteln.
- Der Messwert Rückstand in Byte (
Weitere Messwerte, die nicht in der Dataflow-Monitoring-Weboberfläche enthalten sind, finden Sie in der vollständigen Liste der Dataflow-Messwerte unter Google Cloud-Messwerte.