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=30Profilowanie 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 workloadProfilowanie 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 browserWykres płomieniowy
Proszę wygenerować wykres płomieniowy (wymaga graphviz) za pomocą -http=:8080, aby otworzyć interaktywny interfejs internetowy:
go tool pprof -http=:8080 cpu.profInterpretowanie 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/goroutineProfilowanie 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
- Pisanie benchmarków za pomocą testing.B
- Profilowanie procesora za pomocą pprof
- Profilowanie sterty i alokacji
- Śledzenie wykonania