Sobes.tech
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 პორტი საჯაროდ ავტორიზაციის გარეშე წარმოებაში.