Sobes.tech
Middle

Go колдонмоңузга стандарттык профайлерди кантип киргизсе болот?

sobes.tech AI

AIден жооп

net/http/pprof пакети HTTP-иштетүүчүлөрдү профилирдөө үчүн керектелет.

Аны импорттоо:

import (
	"net/http"
	_ "net/http/pprof" // Эң маанилүү '_' колдонуу менен инициализациялоо үчүн
)

Аны бөлөк goroutineде HTTP-серверди ишке киргизиңиз:

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 портуна уруксатсыз ачыкка чыгарбаңыз өндүрүштө.