0Pricing
Go Academy · Lektion

Ausführungstracing

go tool trace für Analysen auf Goroutine-Ebene

Ausführungstracing ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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 Ausführungs-Tracing?

Der Go-Ausführungs-Tracer zeichnet eine Zeitleiste der Goroutine-Planung, GC-Ereignisse, Systemaufrufe und des Heap-Wachstums auf. Er bietet eine visuelle Darstellung von Parallelität und Latenz, die CPU- oder Heap-Profile nicht liefern.

Trace erfassen

Erfassen Sie einen Trace über den HTTP-Endpunkt:

curl http://localhost:6060/debug/pprof/trace?seconds=5 -o trace.out
go tool trace trace.out

Trace in einer Datei

Verwenden Sie runtime/trace, um programmgesteuert einen Trace aufzuzeichnen:

f, _ := os.Create("trace.out")
trace.Start(f)
defer trace.Stop()
// run workload

go test -trace

Erfassen Sie während Test- oder Benchmarkläufen einen Trace:

go test -trace trace.out -bench=. ./...
go tool trace trace.out

Trace-Viewer

Der Trace-Viewer (go tool trace) wird in einem Browser geöffnet und zeigt Goroutine-Zeitleisten, GC-Ereignisse, die Heap-Größe und die Stacktraces jeder Goroutine zu jedem Zeitpunkt.

Goroutine-Analyse

Die Ansicht „Goroutine Analysis“ gruppiert Goroutines nach Funktion und zeigt, wie viel Zeit jede in den Zuständen running, runnable (wartet auf ein P), blocked (Channel/Mutex/Systemaufruf) und sleeping verbringt.

Scheduler-Latenz finden

Eine lange Zeit im Zustand "runnable" bedeutet, dass Goroutines bereit sind, aber nicht eingeplant werden. Das weist auf zu viele Goroutines hin, die um die Ps von GOMAXPROCS konkurrieren, oder auf einen durch die CPU ausgebremsten Prozess.

Auswirkungen von GC

Stop-the-World-Pausen des GC erscheinen als graue Balken über alle Goroutines hinweg. Lange oder häufige Pausen weisen auf übermäßige Allokationen hin – kombinieren Sie diese Analyse mit Heap-Profiling, um Allokationen zu reduzieren.

Benutzerannotationen

Fügen Sie dem Trace mit trace.WithRegion und trace.Log eigene Bereiche hinzu, um Ihre Codeabschnitte für eine einfachere Analyse zu markieren.

trace.WithRegion(ctx, "parse request", func() {
    parseRequest(req)
})

Task und Region

trace.NewTask gruppiert zusammengehörige Bereiche unter einem benannten Task. So können Sie die Ende-zu-Ende-Latenz einer logischen Operation über mehrere Goroutines hinweg messen.

ctx, task := trace.NewTask(ctx, "handle request")
defer task.End()

Trace vs. Profil

CPU-Profil: welche Funktionen im Laufe der Zeit CPU verbrauchen. Heap-Profil: welche Funktionen Speicher allokieren. Trace: wann Goroutines ausgeführt werden, blockieren und wie sich der GC dazwischenschaltet – unterschiedliche Werkzeuge für unterschiedliche Fragen.

Kurze Überprüfung

Was bedeutet der Goroutine-Zustand "runnable" im Ausführungs-Trace?

Zusammenfassung: Ausführungs-Tracing

Wichtige Punkte:

  • go tool trace zeigt Goroutine-Zeitleisten, GC-Ereignisse und Scheduling
  • Erfassung über den HTTP-Endpunkt oder das Paket runtime/trace
  • Zeit im Zustand runnable → Scheduler-Konkurrenz; GC-Pausen → übermäßige Allokationen
  • Benutzerannotationen (WithRegion, NewTask) markieren Ihre eigenen Abschnitte

Häufig gestellte Fragen

Ist die Lektion „Ausführungstracing“ kostenlos?

Ja — der vollständige Text von „Ausführungstracing“ 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 „Ausführungstracing“?

go tool trace für Analysen auf Goroutine-Ebene 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 4 von 4.

Wie lange dauert die Lektion „Ausführungstracing“?

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