App-Leistung messen
In diesem Dokument erfahren Sie, wie Sie Cloud Profiler einrichten und verwenden. Sie laden ein Go-Beispielprogramm herunter, führen es mit aktivierter Profilerstellung aus und verwenden dann die Profiler-Oberfläche, um die erfassten Daten zu analysieren.
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the required API.
- Wenn Sie Cloud Shell öffnen möchten, klicken Sie in der Symbolleiste der Google Cloud Console auf Cloud Shell aktivieren:
Nach kurzer Zeit wird in der Google Cloud Console eine Cloud Shell-Sitzung geöffnet:
Programm zur Profilerstellung abrufen
Das Beispielprogramm main.go
befindet sich im Repository golang-samples
auf GitHub. Rufen Sie dazu das Paket mit den Go-Beispielen ab:
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Das Abrufen des Pakets dauert einen Moment.
Codeprofil erstellen
Wechseln Sie im abgerufenen Paket in das Verzeichnis mit dem Beispielcode für Profiler:
cd golang-samples/profiler/profiler_quickstart
Das Programm main.go
erstellt eine CPU-intensive Arbeitslast, um dem Profiler Daten zur Verfügung zu stellen. Starten Sie das Programm und lassen Sie es laufen:
go run main.go
Dieses Programm ist so konzipiert, dass es während der Ausführung die CPU auslastet. In seiner Konfiguration ist die Verwendung von Profiler vorgesehen, sodass Profildaten aus dem laufenden Programm erfasst und in regelmäßigen Abständen gespeichert werden.
Wenige Sekunden nach dem Start des Programms wird die Meldung profiler has started
angezeigt. Nach etwa einer Minute werden zwei weitere Meldungen angezeigt:
successfully created profile CPU
start uploading profile
Diese Meldungen zeigen an, dass ein Profil erstellt und in Ihr Cloud Storage-Projekt hochgeladen wurde. Solange das Programm läuft, gibt es die letzten beiden Nachrichten weiterhin aus (etwa einmal pro Minute).
Wenn Sie nach dem Start des Dienstes die Fehlermeldung erhalten, dass die Berechtigung verweigert wurde, finden Sie entsprechende Informationen unter Fehler bei der Google Cloud-Projektkonfiguration.
Stackdriver Profiler-Oberfläche
Kurz nachdem Sie die Anwendung gestartet haben, zeigt Profiler die ersten Profildaten an. Die Oberfläche bietet eine Reihe von Steuerelementen und ein Flame-Diagramm zum Analysieren der Daten für die Profilerstellung:
Zusätzlich zu den Zeiteinstellungen gibt es Optionen, mit denen Sie den zu verwendenden Satz von Profildaten auswählen können. Wenn Sie die Profilerstellung für mehrere Anwendungen ausführen, verwenden Sie Dienst, um die Quelle der Profildaten auszuwählen. Profiltyp ermöglicht Ihnen, die Art der darzustellenden Profildaten auszuwählen. Mit Zonenname und Version können Sie die Anzeige auf Daten aus bestimmten Compute Engine-Zonen oder Versionen der Anwendung beschränken. Mit Gewichtung können Sie Profile auswählen, die während des Spitzenverbrauchs an Ressourcen erfasst wurden.
Wenn Sie die Darstellung der analysierten Profile im Flame-Diagramm anpassen möchten, fügen Sie Filter hinzu. Im Screenshot oben wird in der Filterleiste filter_list ein einziger Filter angezeigt. Diese Filteroption ist Metric
und der Filterwert ist CPU time
.
Daten analysieren
Im Flame-Diagramm werden die Aufrufstacks des Programms angezeigt. Im Flame-Diagramm wird jede Funktion mit einem Frame dargestellt. Die Breite des Frames gibt den Anteil des Ressourcenverbrauchs für diese Funktion an. Der oberste Frame steht für das gesamte Programm. Dieser Frame zeigt immer 100 % des Ressourcenverbrauchs an. In diesem Frame wird auch angegeben, wie viele Profile in dieser Grafik gemittelt werden.
Der Satz von Aufrufstacks im Beispielprogramm ist unkompliziert. Im vorherigen Screenshot sehen Sie fünf Frames:
- Der graue Frame stellt die gesamte ausführbare Datei dar, die 100 % des Ressourcenverbrauchs ausmacht.
- Der grüne Frame
main
istruntime.main
von Go. - Der orange Frame
main
ist die Routinemain
des Beispielprogramms. - Der orange Frame
busyloop
ist eine Routine, die ausmain
des Beispielprogramms aufgerufen wird. - Der orange Frame
main.load
ist eine Routine, die ausmain
des Beispielprogramms aufgerufen wird.
Mit der Filterauswahl können Sie beispielsweise Funktionen herausfiltern, die einem bestimmten Namen entsprechen. Wenn Sie etwa eine Standardbibliothek mit Dienstprogrammfunktionen haben, lassen sich diese aus der Grafik entfernen. Sie können auch Aufrufstacks entfernen, die von einer bestimmten Methode ausgehen, oder die Grafik auf andere Weise vereinfachen.
Da die Anwendung main.go
sehr einfach strukturiert ist, lassen sich nicht viele Funktionen herausfiltern.
Selbst bei einer einfachen Anwendung können Sie mit Filtern Frames ausblenden, die für Sie nicht von Interesse sind. Die relevanten Frames lassen sich somit besser sehen. Im Screenshot mit der Profilerstellung für den Beispielcode ist der graue Frame etwas größer als der erste Frame namens main
direkt darunter. Warum? Gibt es hier noch etwas, das nicht sofort erkennbar ist, weil der Aufrufstack main
so einen überwältigenden Anteil der Ressourcen beansprucht?
Wenn Sie sehen möchten, was außerhalb der main
-Routine der Anwendung geschieht, fügen Sie einen Filter hinzu, mit dem der Aufrufstack der main
-Routine ausgeblendet wird.
Nur 0,227 % des Ressourcenverbrauchs fallen außerhalb von main
:
Weitere Informationen zum Filtern und zu anderen Möglichkeiten, die Sie zum Analysieren der Profildaten haben, finden Sie unter Profile für die Analyse auswählen.
Nächste Schritte
Allgemeine Informationen zum Profiling finden Sie in den folgenden Dokumenten:
- Cloud Profiler – Übersicht
- Konzepte der Profilerstellung
- Lesen Sie unsere Ressourcen zu DevOps und informieren Sie sich über das DORA-Forschungsprogramm.
- Profilerstellung für Go-Code
- Profilerstellung für Java-Code
- Profilerstellung für Node.js-Code
- Profilerstellung für Python-Code
- Profilerstellung für Code außerhalb von Google Cloud