Cloud Profiler – Übersicht
Die Leistung von Produktionssystemen nachzuvollziehen, ist bekanntermaßen schwierig. Bei Leistungsmessungen in Testumgebungen gelingt es meist nicht, die Beanspruchung eines Produktionssystems zu reproduzieren. Microbenchmarking für Teile der Anwendung ist zwar in einigen Fällen möglich, die Arbeitslast und das Verhalten eines Produktionssystems können jedoch üblicherweise nicht nachgebildet werden.
Das kontinuierliche Erstellen von Produktionssystemprofilen ist ein probates Mittel, um herauszufinden, wo Ressourcen wie CPU-Zyklen und Arbeitsspeicher beansprucht werden, wenn ein Dienst in seiner Arbeitsumgebung ausgeführt wird. Allerdings stellt die Profilerstellung eine zusätzliche Belastung für das Produktionssystem dar: Damit Muster des Ressourcenverbrauchs auf akzeptable Weise erkannt werden können, muss die zusätzliche Last der Profilerstellung gering sein.
Cloud Profiler ist ein statistischer Profiler mit geringem Overhead, der kontinuierlich Informationen zur CPU-Nutzung und Arbeitsspeicherzuweisung aus Ihren Produktionsanwendungen sammelt. Anschließend werden diese Informationen dem Quellcode zugeordnet, der sie generiert hat. So können Sie feststellen, welche Codesegmente die meisten Ressourcen beanspruchen. Außerdem können Sie auch die Leistungsmerkmale des Codes hervorheben.
Verfügbare Arten der Profilerstellung
Cloud Profiler unterstützt verschiedene Arten der Profilerstellung, je nach der Sprache, in der ein Programm geschrieben ist. In der folgenden Tabelle sind die unterstützten Profiltypen nach Sprache aufgeführt:
Profiltyp | Go | Java | Node.js | Python |
---|---|---|---|---|
CPU-Zeit | Ja | J | Ja | |
Heap | Ja | J | Ja | |
Zugewiesener Heap | Ja | |||
Konflikt | Ja | |||
Threads | Ja | |||
Echtzeit | Ja | J | Ja |
Ausführliche Informationen zu den Sprachanforderungen und möglichen Einschränkungen finden Sie auf der Anleitungsseite der jeweiligen Sprache. Weitere Informationen zu diesen Profiltypen finden Sie unter Konzepte der Profilerstellung.
Unterstützte Konfigurationen
Wenn Sie Ihre Anwendung zur Erfassung von Profildaten konfigurieren, fügen Sie einen sprachspezifischen Profiler-Agent hinzu. In der folgenden Tabelle sind die unterstützten Umgebungen aufgeführt:
Umgebungen | Go | Java | Node.js | Python |
---|---|---|---|---|
Compute Engine | Ja | J | J | Ja |
Google Kubernetes Engine | Ja | J | J | Ja |
Flexible App Engine-Umgebung | Ja | J | J | Ja |
App Engine-Standardumgebung | Ja | J | J | Ja |
Dataproc | J | |||
Dataflow | J | Ja | ||
Außerhalb von Google Cloud | Ja | J | J | Ja |
In der folgenden Tabelle sind die unterstützten Betriebssysteme aufgeführt:
Betriebssysteme | Go | Java | Node.js | Python |
---|---|---|---|---|
Linuxglibc -Implementierung der Standard-C-Bibliothek |
Ja | J | J | Ja |
Linuxmusl -Implementierung der Standard-C-Bibliothek |
Ja | Ja (Alpha) | Ja | Ja (Alpha) |
Auswirkungen auf die Leistung
Für ein einzelnes Profil erfasst Cloud Profiler normalerweise zehn Sekunden lang Profildaten für eine einzelne Instanz des konfigurierten Dienstes in einer einzelnen Compute Engine-Zone. Pro Minute wird ein Profil erstellt. Wenn Ihr GKE-Dienst beispielsweise zehn Replikate eines Pods ausführt, werden in einem Zeitraum von zehn Minuten ungefähr zehn Profile erstellt, wobei für jeden Pod etwa ein Profil erstellt wird. Der Zeitraum der Profilerstellung ist randomisiert, sodass es Abweichungen gibt. Weitere Informationen finden Sie unter Profilerfassung.
Der Overhead beim Erstellen von CPU- und Heap-Zuweisungsprofilen beträgt zum Zeitpunkt der Datenerfassung weniger als fünf Prozent. Über die Ausführungszeit und mehrere Replikate eines Dienstes hinweg gesehen beträgt der Overhead normalerweise weniger als 0,5 %. Dies macht Stackdriver Profiler zu einer erschwinglichen Option für die permanente Profilerstellung in Produktionssystemen.
Komponenten
Cloud Profiler besteht aus dem Profiler-Agent, der die Daten erfasst, und einer Konsolenoberfläche in Google Cloud, mit der Sie die vom Agent erfassten Daten ansehen und analysieren können.
Profiler-Agent
Der Agent wird auf den virtuellen Maschinen installiert, auf denen Ihre Anwendung ausgeführt wird. Er wird normalerweise als Bibliothek bereitgestellt, die Sie dem Code bei dessen Ausführung hinzufügen. Der Agent erfasst Profildaten, während die Anwendung ausgeführt wird.
Weitere Informationen zum Ausführen des Cloud Profiler-Agents finden Sie unter:- 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
Stackdriver Profiler-Oberfläche
Nachdem der Agent einige Profildaten erfasst hat, können Sie anhand der Profiler-Oberfläche ermitteln, wie die Statistiken zur CPU- und Speichernutzung mit bestimmten Bereichen Ihrer Anwendung korrelieren.
Die Profildaten werden 30 Tage lang aufbewahrt, sodass Sie Leistungsdaten über einen 30 Tage zurückliegenden Zeitraum analysieren können. Die Profile lassen sich zur langfristigen Speicherung herunterladen.
Kontingente und Limits
Weitere Informationen zum Aufrufen und Verwalten Ihrer Profiler-Kontingente finden Sie unter Kontingente und Limits.
Datensicherheit
Cloud Profiler ist ein von VPC Service Controls unterstützter Dienst. Weitere Informationen dazu finden Sie in der Dokumentation zu VPC Service Controls.