0Pricing
Go Academy · Lektion

CPU-Profiling mit pprof

CPU-Profile sammeln und visualisieren

CPU-Profiling mit pprof ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist pprof?

net/http/pprof und das Paket runtime/pprof stellen Profildaten bereit, die zeigen, wo Ihr Programm CPU-Zeit verbringt. Die CLI go tool pprof analysiert Profile.

HTTP-p​​prof-Endpunkt

Importieren Sie _ "net/http/pprof", um Profiling-Endpunkte unter /debug/pprof/ auf einem vorhandenen HTTP-Server zu registrieren.

import _ "net/http/pprof"

go func() {
    log.Println(http.ListenAndServe(":6060", nil))
}()

CPU-Profil erfassen

Erfassen Sie über den HTTP-Endpunkt 30 Sekunden lang ein CPU-Profil:

go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30

CPU-Profiling in einer Datei

Verwenden Sie für Programme ohne HTTP-Server runtime/pprof, um eine Profildatei zu schreiben:

f, _ := os.Create("cpu.prof")
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
// run workload

Profiling in Tests

Führen Sie Tests mit den Flags -cpuprofile und -memprofile aus, um sie unter einer realistischen Testlast zu profilieren:

go test -cpuprofile cpu.prof -memprofile mem.prof -bench=. ./...

Interaktiver Modus von go tool pprof

Öffnen Sie das Profil und untersuchen Sie es mit interaktiven Befehlen:

go tool pprof cpu.prof
(pprof) top        # top functions by CPU time
(pprof) list main  # annotated source
(pprof) web        # call graph in browser

Flame-Graph

Erzeugen Sie mit -http=:8080 einen Flame-Graph (dafür ist graphviz erforderlich), um eine interaktive Weboberfläche zu öffnen:

go tool pprof -http=:8080 cpu.prof

Ausgabe von top interpretieren

top zeigt Funktionen, sortiert nach Self-Time (Zeit in dieser Funktion) und kumulativer Zeit (einschließlich aufgerufener Funktionen). Konzentrieren Sie sich auf Funktionen mit hoher Self-Time, um direkte Optimierungsmöglichkeiten zu finden.

Goroutine-Profil

Der Endpunkt /debug/pprof/goroutine zeigt alle Goroutine-Stacktraces. Verwenden Sie ihn, um Goroutine-Leaks oder blockierte Goroutines zu erkennen.

go tool pprof http://localhost:6060/debug/pprof/goroutine

Kontinuierliches Profiling

Verwenden Sie für Produktionssysteme Dienste für kontinuierliches Profiling (Pyroscope, Datadog, Google Cloud Profiler), um Profile zu erfassen, ohne den Dienst anzuhalten.

pprof in CI

Vergleichen Sie Profile aus zwei Versionen Ihres Codes, um Performance-Regressionen zu erkennen, bevor sie die Produktion erreichen.

Kurze Überprüfung

Was stellt die Spalte "self" in der pprof-top-Ausgabe dar?

Zusammenfassung: CPU-Profiling mit pprof

Wichtige Punkte:

  • net/http/pprof für einen HTTP-Endpunkt importieren; runtime/pprof für eine Datei
  • go tool pprof -http=:8080 für die Flame-Graph-Oberfläche
  • top: Self-Time = direkte Kosten; kumulativ = Gesamtkosten einschließlich aufgerufener Funktionen
  • go test -cpuprofile für Benchmark-Profiling

Häufig gestellte Fragen

Ist die Lektion „CPU-Profiling mit pprof“ kostenlos?

Ja — der vollständige Text von „CPU-Profiling mit pprof“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „CPU-Profiling mit pprof“?

CPU-Profile sammeln und visualisieren Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Go Academy zu starten?

Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „CPU-Profiling mit pprof“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?

Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Benchmarks mit testing.B schreiben
  2. CPU-Profiling mit pprof
  3. Heap- und Allokations-Profiling
  4. Ausführungstracing
← Zurück zu Go Academy