Fehlerbehebung bei Nachzüglern in Streamingjobs

Bei Streamingpipelines ist ein Nachzügler als Arbeitselement mit folgenden Merkmalen definiert:

  • Es verhindert für eine längere Zeit (in der Größenordnung von Minuten), dass das Wasserzeichen vorangebracht wird.
  • Seine Verarbeitung dauert relativ zu anderen Arbeitselementen in derselben Phase lange.

Nachzügler halten das Wasserzeichen zurück und fügen dem Job Latenz hinzu. Wenn die Verzögerung für Ihren Anwendungsfall akzeptabel ist, müssen Sie keine Maßnahmen ergreifen. Wenn Sie die Latenz eines Jobs reduzieren möchten, beginnen Sie mit etwaigen Nachzüglern.

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

Streaming-Nachzügler können Sie in der Ansicht "Phasenfortschritt" oder in der Ansicht "Phasenworkflow" sehen.

Nachzügler nach Phasenfortschritt aufrufen

So rufen Sie einen Nachzügler nach Phasenfortschritt auf:

  1. Rufen Sie in der Google Cloud Console die Dataflow-Seite Jobs auf.

    ZU JOBS

  2. Klicken Sie auf den Namen des Jobs.

  3. Klicken Sie auf der Seite Jobdetails auf den Tab Ausführungsdetails.

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

    Ein Screenshot der Ansicht "Phasenfortschritt".

  5. Um Details zu einer Phase aufzurufen, bewegen Sie den Mauszeiger über den Balken für die Phase. Der Detailbereich enthält einen Link zu den Worker-Logs. Wenn Sie auf diesen Link klicken, wird Cloud Logging in Bezug auf den Worker und den Zeitraum geöffnet, in dem der Nachzügler erkannt wurde.

    Ein Screenshot der Karte mit Nachzüglerdetails.

Nachzügler nach Phasenworkflow aufrufen

So rufen Sie einen Nachzügler nach Phasenworkflow auf:

  1. Rufen Sie in der Google Cloud Console die Dataflow-Seite Jobs auf.

    Zu Jobs

  2. Klicken Sie auf den Namen des Jobs.

  3. Klicken Sie auf der Seite mit den Jobdetails auf den Tab Ausführungsdetails.

  4. Wählen Sie in der Liste Grafikansicht die Option Phasenworkflow aus. Der Phasenworkflow zeigt die Ausführungsphasen des Jobs an, die als Workflowgrafik dargestellt werden.

    Ein Screenshot der Ansicht "Phasenworkflow"

Probleme mit Streaming-Nachzüglern beheben

Wenn ein Nachzügler erkannt wird, bedeutet dies, dass ein Vorgang in der Pipeline seit ungewöhnlich langer Zeit ausgeführt wird.

Prüfen Sie zur Behebung des Problems zuerst, ob Dataflow-Statistiken auf Probleme hinweisen.

Wenn Sie die Ursache immer noch nicht ermitteln können, prüfen Sie die Worker-Logs für die Phase, die den Nachzügler gemeldet hat. Informationen zu den relevanten Worker-Logs finden Sie in den Nachzügler-Details im Phasenfortschritt. Klicken Sie dann auf den Link für den Worker. Über diesen Link wird Cloud Logging in Bezug auf den Worker und den Zeitraum geöffnet, in dem der Nachzügler erkannt wurde. Suchen Sie nach Problemen, die die Phase verlangsamen können, z. B.:

  • Programmfehler im DoFn-Code oder festhängende DoFns. Suchen Sie in den Logs nach Stacktraces in der Nähe des Zeitstempels, in dem der Nachzügler erkannt wurde.
  • Aufrufe externer Dienste, die sehr lange dauern. Sie können dieses Problem umgehen, indem Sie Batchanfragen an externe Dienste weiterleiten und Zeitlimits für RPCs festlegen.
  • Kontingentlimits in Senken. Wenn Ihre Pipeline an einen Google Cloud-Dienst ausgibt, können Sie das Kontingent möglicherweise erhöhen. Weitere Informationen finden Sie unter Mit Kontingenten arbeiten. Prüfen Sie darüber hinaus die Dokumentation des jeweiligen Dienstes auf Optimierungsstrategien hin und schlagen Sie in der Dokumentation zum E/A-Connector nach.
  • DoFns, die große Lese- oder Schreibvorgänge im nichtflüchtigen Status ausführen. Erwägen Sie eine Refaktorierung des Codes, um kleinere Lese- oder Schreibvorgänge im nichtflüchtigen Status auszuführen.

Sie können auch den Bereich Nebeninformationen verwenden, um die langsamsten Schritte in der Phase zu finden. Einer dieser Schritte kann möglicherweise den Nachzügler verursachen. Klicken Sie auf den Schrittnamen, um die Worker-Logs für diesen Schritt aufzurufen.

Nachdem Sie die Ursache ermittelt haben, aktualisieren Sie Ihre Pipeline mit neuem Code und überwachen Sie das Ergebnis.

Nächste Schritte