> Как запустить профилировщик в Go (Go)

Уровень: senior · Роль: backend · Категория: Технические вопросы

Компании: Wildberries

Стек: Go

> Пример ответа

В Go профилировщик запускается через пакет runtime/pprof для CPU и памяти, или через net/http/pprof для HTTP-серверов.

1. CPU-профилирование
Используйте pprof.StartCPUProfile() и pprof.StopCPUProfile():

GO
import "runtime/pprof"
f, _ := os.Create("cpu.prof")
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
// ваш код

Затем анализируйте: go tool pprof cpu.prof.

2. Профилирование памяти
Запишите снимок:

GO
f, _ := os.Create("mem.prof")
pprof.WriteHeapProfile(f)
f.Close()

Или используйте runtime.GC() перед записью для точности.

3. Через HTTP (удобно для веб-сервисов)
Импортируйте net/http/pprof:

GO
import _ "net/http/pprof"
// запустите HTTP-сервер
http.ListenAndServe(":6060", nil)

Теперь доступны эндпоинты: /debug/pprof/, /debug/pprof/profile (CPU), /debug/pprof/heap (память).
Пример сбора CPU через curl:
curl -o cpu.prof http://localhost:6060/debug/pprof/profile?seconds=30

4. Интерактивный анализ
После получения профиля:
go tool pprof -http=:8080 cpu.prof - откроет веб-интерфейс с графами и flame graph.

Совет: Для продакшена используйте runtime.SetBlockProfileRate и runtime.SetMutexProfileFraction для блокировок и мьютексов, а также pprof.Lookup("goroutine") для горутин.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью