Sobes.tech
Senior

Πώς να συνδέσετε έναν profiler στο 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 — κατάσταση των goroutines

Για να αποθηκεύσετε το CPU προφίλ σε αρχείο προγραμματιστικά:

import (
    "os"
    "runtime/pprof"
)

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

    // κώδικας προς προφίλ
}

Για ανάλυση προφίλ, χρησιμοποιείται η εντολή go tool pprof.