0Pricing
Go Academy · Lekcja

Profilowanie procesora za pomocą pprof

Zbieranie i wizualizowanie profili procesora

Profilowanie procesora za pomocą pprof to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.

Czym jest pprof?

Pakiety net/http/pprof i runtime/pprof udostępniają dane profilowania pokazujące, gdzie program spędza czas procesora. Interfejs wiersza poleceń go tool pprof analizuje profile.

Punkt końcowy HTTP pprof

Proszę zaimportować _ "net/http/pprof", aby zarejestrować punkty końcowe profilowania pod adresem /debug/pprof/ na istniejącym serwerze HTTP.

import _ "net/http/pprof"

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

Przechwytywanie profilu CPU

Proszę przechwycić 30 sekund profilu CPU za pośrednictwem punktu końcowego HTTP:

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

Profilowanie oparte na pliku

W przypadku programów bez serwera HTTP proszę użyć runtime/pprof do zapisania pliku profilu:

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

Profilowanie w testach

Proszę uruchomić testy z flagami -cpuprofile i -memprofile, aby profilować program przy realistycznym obciążeniu testami:

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

Tryb interaktywny go tool pprof

Proszę otworzyć profil i analizować go za pomocą interaktywnych poleceń:

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

Wykres płomieniowy

Proszę wygenerować wykres płomieniowy (wymaga graphviz) za pomocą -http=:8080, aby otworzyć interaktywny interfejs internetowy:

go tool pprof -http=:8080 cpu.prof

Interpretowanie danych wyjściowych top

top wyświetla funkcje posortowane według czasu własnego (czasu spędzonego w danej funkcji) oraz czasu skumulowanego (obejmującego funkcje wywoływane). Proszę skupić się na funkcjach o dużym czasie własnym, ponieważ wskazują one bezpośrednie możliwości optymalizacji.

Profil goroutines

Punkt końcowy /debug/pprof/goroutine pokazuje ślady stosu wszystkich goroutines. Proszę użyć go do wykrywania wycieków goroutines lub zablokowanych goroutines.

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

Profilowanie ciągłe

W systemach produkcyjnych proszę używać usług ciągłego profilowania (Pyroscope, Datadog, Google Cloud Profiler), aby przechwytywać profile bez zatrzymywania usługi.

pprof w CI

Proszę porównywać profile dwóch wersji kodu, aby wykrywać regresje wydajności, zanim trafią one do środowiska produkcyjnego.

Szybkie sprawdzenie

Co reprezentuje kolumna "self" w danych wyjściowych pprof top?

Podsumowanie: profilowanie CPU za pomocą pprof

Najważniejsze informacje:

  • Import net/http/pprof udostępnia punkt końcowy HTTP, a runtime/pprof służy do pracy z plikiem
  • go tool pprof -http=:8080 otwiera interfejs wykresu płomieniowego
  • top: czas własny = koszt bezpośredni; czas skumulowany = koszt całkowity obejmujący funkcje wywoływane
  • go test -cpuprofile służy do profilowania benchmarków

Często zadawane pytania

Czy lekcja „Profilowanie procesora za pomocą pprof” jest bezpłatna?

Tak — pełny tekst „Profilowanie procesora za pomocą pprof” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Profilowanie procesora za pomocą pprof”?

Zbieranie i wizualizowanie profili procesora Ćwiczysz Go Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Go Academy?

Nie wymagamy żadnego doświadczenia. Go Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Profilowanie procesora za pomocą pprof”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Go Academy?

Tak. Każda lekcja Go Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Pisanie benchmarków za pomocą testing.B
  2. Profilowanie procesora za pomocą pprof
  3. Profilowanie sterty i alokacji
  4. Śledzenie wykonania
← Powrót do Go Academy