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, необходимо зарегистрировать обработчики в используемом вами мультиплексоре.

Параметры

Параметры можно передавать через параметры запроса 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

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

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

Или для просмотра владельцев мьютексов, за которые идёт конкуренция, после вызова 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://go.dev/blog/pprof.

Указатель

  • 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". На запрос к "/debug/pprof/" Index отвечает HTML-страницей со списком доступных профилей.

func Profile

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

Profile возвращает профиль ЦП в формате pprof. Профилирование длится указанное в параметре GET seconds количество секунд или 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 seconds количество секунд или 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