Nachzügler sind Arbeitsaufgaben, die Ihre Jobs verlangsamen, da sie die parallele Ausführung von Arbeitsschritten verhindern.
Bei Batchpipelines ist ein Nachzügler als Arbeitselement mit folgenden Merkmalen definiert:
- Der Abschluss dauert deutlich länger als andere Arbeitsaufgaben in der gleichen Phase.
- Er reduziert die Parallelität innerhalb der Phase.
- Dadurch wird verhindert, dass neue Aufgaben gestartet werden.
Im schlimmsten Fall blockiert ein Nachzügler eine Phase am Abschluss, da ein kleiner Prozentsatz der Aufgabe ausgeführt wird. Dies führt zu Gesamtverzögerungen bei dem Job.
Dataflow erkennt Nachzügler, die während Batchjobs auftreten. Wenn Dataflow einen Nachzügler erkennt, versucht es auch, die Ursache des Nachzüglers zu ermitteln.
Nachzügler in der Google Cloud Console aufrufen
Nachdem Sie einen Dataflow-Job gestartet haben, können Sie mit der Google Cloud Console alle erkannten Nachzügler aufrufen.
Sie können Nachzügler entweder nach Phase oder nach Worker anzeigen lassen. Verwenden Sie diese Ansichten, um zu ermitteln, welche Phasen Nachzügler haben, und ermitteln Sie dann die Worker, in denen Nachzügler in jeder Phase aufgetreten sind.
Nachzügler nach Phase ansehen
So rufen Sie einen Nachzügler nach Phase auf:
Rufen Sie in der Google Cloud Console die Dataflow-Seite Jobs auf.
Zu Jobs
Klicken Sie auf den Namen des Jobs.
Klicken Sie auf der Seite mit den Jobdetails auf den Tab Ausführungsdetails.
Wählen Sie in der Liste Grafikansicht die Option Phasenfortschritt aus. Die Fortschrittsgrafik zeigt die aggregierte Anzahl aller Nachzügler, die in jeder Phase erkannt wurden.
Details zu einer Phase erhalten Sie, wenn Sie den Mauszeiger über den Balken für eine Phase bewegen. Klicken Sie im Detailbereich auf Worker ansehen, um die Worker für die Phase aufzurufen.
Nachzügler nach Worker ansehen
So zeigen Sie Nachfolger nach Workern an:
Rufen Sie in der Google Cloud Console die Dataflow-Seite Jobs auf.
Zu Jobs
Klicken Sie auf den Namen des Jobs.
Klicken Sie auf der Seite mit den Jobdetails auf den Tab Ausführungsdetails.
Wählen Sie in der Liste Grafikansicht die Option Worker-Fortschritt aus.
Wählen Sie in der Liste Worker nach Phase filtern die Phase aus. Das Fortschrittsdiagramm zeigt alle Nachzügler, die für diese Phase erkannt wurden. Die Säule hat eine dunklere Schattierung an dem Punkt, an dem der Nachzügler erstmals erkannt wurde.
Wenn Sie Details zu einem Worker aufrufen möchten, bewegen Sie den Mauszeiger über den Balken für diesen Worker.
Im Bereich Phaseninformationen werden im Abschnitt Nachzüglerdetails die Nachzügler für alle auf der Seite angezeigten Worker aufgelistet. Dabei werden folgende Informationen angezeigt:
- Die Startzeit, zu der der Nachzügler gefunden wurde.
- Der Worker, bei dem der Nachzügler aufgetreten ist.
- Die Ursache, falls bekannt.
Fehlerbehebung bei Batch-Nachzüglern
Dataflow erkennt die folgenden Ursachen für Nachzügler in Batch-Pipelines:
„Heißer” Schlüssel. Ein „heißer” Schlüssel ist ein Schlüssel, der deutlich mehr Elemente als andere Schlüssel im selben
PCollection
darstellt. Weitere Informationen finden Sie in diesem Dokument unter Fehlerbehebung bei Problemen, die durch „heiße” Schlüssel verursacht werden.Langsamer Worker: Auf einem langsamen Worker werden Aufgaben langsamer als gewöhnlich ausgeführt. Oft ist die Verarbeitungsgeschwindigkeit eines langsamen Workers geringer als die Verarbeitungsgeschwindigkeit der Worker, die ähnliche Arbeiten in derselben Phase ausführen. Viele Faktoren können das Tempo von Workern verringern, darunter CPU-Mangel, Seitenflattern, Maschinenarchitektur und hängende Worker-Prozesse. Wenn solche Probleme auftreten, versucht Dataflow automatisch, diese zu beheben. Weitere Informationen finden Sie in diesem Dokument unter Durch langsame Worker verursachte Nachzügler automatisch beheben.
Unbestimmte Ursache. Nachzügler mit unbestimmter Ursache finden Sie in den allgemeinen Schritten zur Fehlerbehebung für Langsame Batchjobsin "Fehlerbehebung bei langsamen oder hängenden Jobs".
Fehlerbehebung bei Nachzüglern, die durch „heiße” Schlüssel verursacht werden
Verschiedene Faktoren können Nachzügler verursachen. Eine häufige Ursache ist das Vorhandensein einer Tastenkombination. Ein „heißer” Schlüssel ist ein Schlüssel, der deutlich mehr Elemente als andere Schlüssel im selben PCollection
darstellt. „Heiße” Schlüssel können Nachzügler erstellen, da sie die Möglichkeit von Dataflow einschränken, Elemente parallel zu verarbeiten.
Wenn Dataflow einen Nachzügler durch einen „heißen” Schlüssel erkennt, wird im Bereich Nachzüglerdetails Hot Key
als Ursache aufgeführt.
Standardmäßig zeigt Dataflow den Schlüsselwert des „heißen” Schlüssels nicht an. Zum Aufrufen des Schlüsselwerts legen Sie die Pipelineoption hotKeyLoggingEnabled
beim Ausführen des Jobs auf true
fest.
Prüfen Sie zur Behebung dieses Problems, ob Ihre Daten gleichmäßig verteilt sind. Wenn ein Schlüssel unverhältnismäßig viele Werte enthält, sollten Sie die folgenden Vorgehensweisen berücksichtigen:
- Daten nochmal zur Verfügung stellen. Wenden Sie eine
ParDo
-Transformation an, um neue Schlüsselwertpaare auszugeben. - Verwenden Sie für Java-Jobs die
Combine.PerKey.withHotKeyFanout
-Transformation. - Verwenden Sie für Python-Jobs die Transformation
CombinePerKey.with_hot_key_fanout
. - Dataflow Shuffle aktivieren
Wenn eine Pipeline beispielsweise einen JOIN
-Vorgang als Teil einer SQL-Transformation ausführt, enthält ein bestimmter Schlüssel wahrscheinlich eine unverhältnismäßige Datenmenge, wenn er in den GroupByKey
eingespeist wird, der als Teil des erweiterten JOIN
-Vorgangs ausgeführt wird.
Weitere Informationen finden Sie in der folgenden Funktionsanfrage: beam-issue/28186.
Durch langsame Worker verursachte Nachzügler werden automatisch angesprochen
Langsame Worker sind in Dataflow selten, können sich jedoch auf die Jobleistung auswirken. Um Leistungsprobleme bei Dataflow zu verhindern, versucht es, das Problem zu beheben, bevor die Worker Nachzügler bedingen.
Bei der automatischen Risikominderung wird ein Host-Wartungsereignis simuliert. Das Ereignis ist ein Compute Engine-Wartungsmechanismus, der regelmäßig auftritt. Abhängig von der Host-Wartungsrichtlinie des Workers wird der Worker entweder live migriert oder neu gestartet. Bei einer Live-Migration wird die Arbeitslast nicht unterbrochen. Wenn der Worker neu gestartet wird, geht die laufende Arbeit des langsamen Workers verloren und die Verarbeitung wird neu gestartet.
Wird ein langsamer Worker erkannt und erfolgreich automatisch behoben, so wird die folgende Meldung in den Job-Message-Logs angezeigt: .
Slow worker ... detected and automatically remediated ...
Da langsame Worker keine Nachzügler sind, müssen Sie keine weiteren Maßnahmen ergreifen.
Schlägt die automatische Risikominderung fehl, so verursacht der langsame Worker einen Nachzügler, der in der Dataflow-Überwachungsoberfläche angezeigt wird.
Die automatische Risikominderung kann fehlschlagen, wenn Ihr Projekt das Kontingent für Anfragen zum Simulieren von Wartungsereignisanfragen für Instanzen überschreitet. Weitere Informationen zum Standardkontingent finden Sie unter API-Ratenbegrenzungen für regionale Messwerte im Artikel "Kontingente für die Ressourcennutzung und Berechtigungsverwaltung". Unter Höheres Kontingentlimit anfordern finden Sie unter "Kontingente aufrufen und verwalten" weitere Informationen.
Nächste Schritte
- Dataflow-Monitoring-Oberfläche verwenden
- Informationen zum Tab Ausführungsdetails in der Monitoring-Oberfläche.