Sobes.tech
Middle

Go dasturiga standart profilingni qanday qo'shish mumkin?

sobes.tech AI

AIdan javob

net/http/pprof пакети профілювання даних для HTTP-обробників.

Імпортуйте його:

import (
	"net/http"
	_ "net/http/pprof" // Важливо використовувати '_' для ініціалізації з побічними ефектами
)

Запустіть 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: Профіль купи.
  • /debug/pprof/goroutine: Профіль активних горутин.
  • /debug/pprof/block: Профіль блокувань.
  • /debug/pprof/threadcreate: Профіль створення потоків ОС.
  • /debug/pprof/cmdline: Командний рядок додатку.
  • /debug/pprof/profile: Профіль CPU (за замовчуванням збирає дані 30 секунд).
  • /debug/pprof/trace: Профіль трасування виконання (за замовчуванням збирає дані 1 секунду).

Для аналізу профілів CPU, купи та блокувань зазвичай використовується утиліта go tool pprof:

go tool pprof http://localhost:6060/debug/pprof/profile # Профіль CPU за 30 секунд
go tool pprof http://localhost:6060/debug/pprof/heap # Профіль купи

Для аналізу трасування виконується утиліта go tool trace:

go tool trace http://localhost:6060/debug/pprof/trace

Важливо: Пам'ятайте про безпеку і не відкривайте порт pprof публічно без авторизації у продакшені.