Middle
Как да вградите стандартния профайлер във вашето приложение на Go?
sobes.tech AI
Отговор от AI
Пакетът 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 публично без авторизация в продукция.