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)
    }()
    // колдонмонун калган коду
}

Ишке киргизгичен кийин, профилдерди алуу үчүн, эндпоинттерге кайрылсаңыз болот:

  • 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 командасы колдонулат.