Middle
როგორ შევიტანოთ სტანდარტული პროფაილერი თქვენს Go პროგრამაში?
sobes.tech AI
პასუხი AI-სგან
net/http/pprof პაკეტი უზრუნველყოფს HTTP მენეჯერებს პროფილირების მონაცემებისთვის.
იმპორტი:
import (
"net/http"
_ "net/http/pprof" // მნიშვნელოვანია '_' გამოყენება ინიციალიზაციისთვის გვერდითი ეფექტებით
)
საწყისად დააწყეთ HTTP სერვერი ცალკე goroutine-ში:
go func() {
// დაიწყეთ სერვერი ლოკალურ მისამართზე და სტანდარტული pprof პორტით
if err := http.ListenAndServe("localhost:6060", nil); err != nil {
// მართეთ სერვერის დაწყების შეცდომა, მაგალითად, ლოგირებით
// log.Printf("pprof სერვერი ვერ მუშაობს: %v", err)
}
}()
ახლა შეგიძლიათ მიაწვდეთ პროფილირების მონაცემებს მისამართზე http://localhost:6060/debug/pprof/.
მთავარი ხელმისაწვდომი წერტილები:
/debug/pprof/: მთავარი გვერდი, სადაც ჩამოთვლილია ხელმისაწვდომი პროფილები./debug/pprof/heap: heap პროფილი./debug/pprof/goroutine: აქტიური goroutine-ების პროფილი./debug/pprof/block: ბლოკირების პროფილი./debug/pprof/threadcreate: ოპერაციული სისტემის ნაკადების შექმნის პროფილი./debug/pprof/cmdline: აპლიკაციის ბრძანების ხაზი./debug/pprof/profile: CPU პროფილი (ნაგულისხმევად აგროვებს მონაცემებს 30 წამით)./debug/pprof/trace: შესრულების ტრასირების პროფილი (ნაგულისხმევად აგროვებს მონაცემებს 1 წამით).
CPU, heap და ბლოკირების პროფილების ანალიზისთვის ჩვეულებრივ გამოიყენება go tool pprof ინსტრუმენტი:
go tool pprof http://localhost:6060/debug/pprof/profile # CPU პროფილი 30 წამი
ngo tool pprof http://localhost:6060/debug/pprof/heap # Heap პროფილი
შესრულების ტრასირების ანალიზისთვის გამოიყენება go tool trace ინსტრუმენტი:
go tool trace http://localhost:6060/debug/pprof/trace
მნიშვნელოვანია: გაითვალისწინეთ უსაფრთხოება და არ გახსნათ pprof პორტი საჯაროდ ავტორიზაციის გარეშე წარმოებაში.