Profilerstellung für Dataflow-Pipelines mit Cloud Profiler

Cloud Profiler ist ein statistischer Profiler mit geringem Overhead, der kontinuierlich Informationen zur CPU-Nutzung und Arbeitsspeicherzuweisung aus Ihren Produktionsanwendungen sammelt. Durch die Einbindung von Dataflow in Cloud Profiler können Sie die Teile des Pipelinecodes ermitteln, die die meisten Ressourcen beanspruchen.

Hinweis

Machen Sie sich mit den Konzepten von Cloud Profiler und mit der Profiler-Oberfläche vertraut.

Die Cloud Profiler API für Ihr Projekt wird automatisch aktiviert, wenn Sie die Profiler-Seite zum ersten Mal aufrufen. Prüfen Sie, ob Ihr Projekt ausreichend Kontingente hat.

Cloud Profiler für Dataflow-Pipelines aktivieren

Cloud Profiler ist für Dataflow-Pipelines verfügbar, die im Apache Beam SDK für Java und Python ab Version 2.33.0 geschrieben sind. Es kann beim Start der Pipeline aktiviert werden. Der amortisierte CPU- und Speicheraufwand wird für Ihre Pipelines voraussichtlich weniger als 1 % betragen.

Java

Starten Sie die Pipeline mit der Option --dataflowServiceOptions=enable_google_cloud_profiler, um die CPU-Profilerstellung zu aktivieren.

Starten Sie die Pipeline mit den Optionen --dataflowServiceOptions=enable_google_cloud_profiler und --dataflowServiceOptions=enable_google_cloud_heap_sampling, um die Heap-Profilerstellung zu aktivieren. Die Heap-Profilerstellung erfordert Java 11 oder höher.

Python

Ihre Python-Pipeline muss mit Dataflow Runner v2 ausgeführt werden, um Cloud Profiler verwenden zu können.

Starten Sie die Pipeline mit der Option --dataflow_service_options=enable_google_cloud_profiler, um die CPU-Profilerstellung zu aktivieren. Die Heap-Profilerstellung wird für Python noch nicht unterstützt.

Wenn Sie Ihre Pipelines aus Dataflow-Vorlagen bereitstellen, können Sie Cloud Profiler aktivieren, indem Sie die Flags enable_google_cloud_profiler und enable_google_cloud_heap_sampling als zusätzliche Tests angeben.

Console

Wenn Sie eine Von Google bereitgestellte Vorlage verwenden, können Sie die Flags im Feld Zusätzliche Tests auf der Dataflow-Seite Job aus Vorlage erstellen angeben.

gcloud

Wenn Sie Vorlagen mit dem gcloud-Befehlszeilentool ausführen, entweder gcloud dataflow jobs run oder gcloud dataflow flex-template run (je nach Vorlagentyp), können Sie die Flags über die Option --additional-experiments angeben.

API

Wenn Sie die REST API zum Ausführen von Vorlagen verwenden, können Sie die Flags über das Feld additionalExperiments der Laufzeitumgebung angeben, entweder RuntimeEnvironment oder FlexTemplateRuntimeEnvironment, je nach Vorlagentyp.

Profildaten ansehen

Wenn Cloud Profiler aktiviert ist, wird ein Link zur Profiler-Seite auf der Jobseite angezeigt.

Grafik: Link zur Profiler-Seite

Sie können auch die Profiler-Seite aufrufen, um die Profildaten für Ihre Dataflow-Pipeline zu suchen. Dabei ist der Dienst Ihr Jobname und die Version Ihre Job-ID.

Grafik: Profiler-Seite

Fehlerbehebung

Häufige Ursachen können verhindern, dass Ihre Pipeline die Profildaten generiert, auch wenn Sie Cloud Profiler aktivieren.

  • Ihre Pipeline verwendet eine ältere Apache Beam SDK-Version. Sie können die Apache Beam SDK-Version Ihrer Pipeline über die Jobseite aufrufen. Sie benötigen Version 2.33.0 oder höher, um Cloud Profiler verwenden zu können. Achten Sie darauf, dass die Vorlagen die unterstützten SDK-Versionen verwenden, wenn Ihr Job aus Dataflow-Vorlagen erstellt wird.

  • Ihr Cloud Profiler-Kontingent ist aufgebraucht. Sie können die Kontingentnutzung auf der Kontingentseite Ihres Projekts einsehen. Der Cloud Profiler-Dienst lehnt die Profildaten ab, wenn Sie Ihr Kontingent erreicht haben.

Der Cloud Profiler-Agent wird beim Start des Dataflow-Workers installiert. Von Cloud Profiler generierte Lognachrichten sind in den Logtypen dataflow.googleapis.com/worker-startup verfügbar.

Grafik: Profiler-Log