Spec-Zone.ru › Go

Пакет pprof

  • import "net/http/pprof"
  • Обзор
  • Индекс

Обзор

Пакет pprof предоставляет через свой HTTP-сервер данные о профилировании выполнения в формате, ожидаемом инструментом визуализации pprof.

Пакет, как правило, импортируется только для побочного эффекта регистрации его HTTP-обработчиков. Обрабатываемые пути начинаются с /debug/pprof/. Начиная с Go 1.22, все пути должны запрашиваться с помощью GET.

Для использования pprof подключите этот пакет к вашей программе:

import _ "net/http/pprof"

Если ваша программа ещё не запускает HTTP-сервер, вам нужно запустить его. Добавьте «net/http» и «log» в свои импорты и следующий код в вашу функцию main:

go func() {
	log.Println(http.ListenAndServe("localhost:6060", nil))
}()

По умолчанию доступны все профили, перечисленные в runtime/pprof.Profile (через Handler), а также профили Cmdline, Profile, Symbol и Trace, определённые в этом пакете. Если вы не используете DefaultServeMux, вам нужно будет зарегистрировать обработчики с используемым вами mux.

Параметры

Параметры могут быть переданы через GET-параметры запроса:

  • debug=N (все профили): формат ответа: N = 0: двоичный (по умолчанию), N > 0: текстовый
  • gc=N (профиль кучи): N > 0: запустить цикл сборки мусора перед профилированием
  • seconds=N (профили allocs, block, goroutine, heap, mutex, threadcreate): вернуть профили разницы
  • seconds=N (профили cpu (profile), trace): профилировать заданную продолжительность

Примеры использования

Используйте инструмент pprof для просмотра профиля кучи:

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

Или для просмотра профиля ЦП продолжительностью 30 секунд:

go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30

Или для просмотра профиля блокировки goroutine после вызова runtime.SetBlockProfileRate в вашей программе:

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

Или для просмотра держателей конкурирующих mutex после вызова runtime.SetMutexProfileFraction в вашей программе:

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

Пакет также экспортирует обработчик, который обслуживает данные трассировки выполнения для команды «go tool trace». Для сбора трассировки выполнения продолжительностью 5 секунд:

curl -o trace.out http://localhost:6060/debug/pprof/trace?seconds=5
go tool trace trace.out

Чтобы просмотреть все доступные профили, откройте http://localhost:6060/debug/pprof/ в вашем браузере.

Для изучения работы этой возможности посетите https://blog.golang.org/2011/06/profiling-go-programs.html.

Индекс

  • func Cmdline(w http.ResponseWriter, r *http.Request)
  • func Handler(name string) http.Handler
  • func Index(w http.ResponseWriter, r *http.Request)
  • func Profile(w http.ResponseWriter, r *http.Request)
  • func Symbol(w http.ResponseWriter, r *http.Request)
  • func Trace(w http.ResponseWriter, r *http.Request)

Файлы пакета

pprof.go

func Cmdline

func Cmdline(w http.ResponseWriter, r *http.Request)

Cmdline отвечает строкой командной строки запущенной программы, с аргументами, разделёнными байтами NUL. Инициализация пакета регистрирует его как /debug/pprof/cmdline.

func Handler

func Handler(name string) http.Handler

Handler возвращает HTTP-обработчик, который обслуживает указанный профиль. Доступные профили можно найти в runtime/pprof.Profile.

func Index

func Index(w http.ResponseWriter, r *http.Request)

Index отвечает профилем в формате pprof, указанным в запросе. Например, "/debug/pprof/heap" обслуживает профиль "heap". Index отвечает на запрос "/debug/pprof/" HTML-страницей, перечисляющей доступные профили.

func Profile

func Profile(w http.ResponseWriter, r *http.Request)

Profile отвечает профилем CPU в формате pprof. Профилирование длится заданное в секундах значение параметра GET, или 30 секунд, если не указано. Инициализация пакета регистрирует его как /debug/pprof/profile.

func Symbol

func Symbol(w http.ResponseWriter, r *http.Request)

Symbol ищет указанные в запросе счётчики программ, отвечая таблицей, сопоставляющей счётчики программ с именами функций. Инициализация пакета регистрирует его как /debug/pprof/symbol.

func Trace 1.5

func Trace(w http.ResponseWriter, r *http.Request)

Trace отвечает трассировкой выполнения в двоичном формате. Трассировка длится заданное в секундах значение параметра GET, или 1 секунду, если не указано. Инициализация пакета регистрирует его как /debug/pprof/trace.

© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/net/http/pprof/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API