Sobes.tech
Senior

როგორ დავაკავშიროთ პროფაილერი Go-ში? როგორ გადავიღოთ პროფილები?

sobes.tech AI

პასუხი AI-სგან

Go-ში პროფილირებისათვის გამოიყენება პაკეტები net/http/pprof და runtime/pprof.

პროფილერის დაკავშირება HTTP-სერვერთან საკმარისია, თუ იმპორტირებთ:

import _ "net/http/pprof"

და დაიწყებთ HTTP-სერვერის, მაგალითად:

import (
    "net/http"
    _ "net/http/pprof"
)

func main() {
    go func() {
        http.ListenAndServe(":6060", nil)
    }()
    // დანარჩენი კოდი
}

საშუალოდ, პროფილები მიიღება ამ endpoints-ებზე წვდომით:

  • http://localhost:6060/debug/pprof/profile — CPU პროფილი (ჩამონათვალში 30 წამი)
  • http://localhost:6060/debug/pprof/heap — მეხსიერების პროფილი
  • http://localhost:6060/debug/pprof/goroutine — გორუტინების მდგომარეობა

CPU პროფილის ფაილში პროგრამული ჩაწერისთვის:

import (
    "os"
    "runtime/pprof"
)

func main() {
    f, _ := os.Create("cpu.prof")
    pprof.StartCPUProfile(f)
    defer pprof.StopCPUProfile()

    // პროფილირებადი კოდი
}

პროფილების ანალიზისთვის გამოიყენება go tool pprof ბრძანება.