Вопрос с собеседования · Go

Как найти, что тормозит или ест память в Go-сервисе, — pprof?

MiddleМодули, тесты и инструменты
Ещё спрашивают так:
  • Как профилировать Go-приложение?
  • Как найти утечку памяти в Go?
Коротко

pprof — встроенный профилировщик. В сервис подключают import _ "net/http/pprof" (на внутреннем порту), затем go tool pprof http://host:6060/debug/pprof/profile?seconds=30 — профиль CPU, /heap — память (живые объекты и аллокации), /goroutine — стеки всех горутин (видно утечки горутин), /mutex и /block — ожидание блокировок. Анализ: top, list функция, flame graph в веб-интерфейсе (-http=:8080). Для кода — бенчмарки с -benchmem и -cpuprofile.

  • Растущее число горутин в /goroutine — классический признак утечки
  • alloc_space показывает, кто много аллоцирует (нагрузка на GC), inuse_space — кто держит память
  • Эндпоинт pprof нельзя открывать наружу

А ещё Сравнение двух профилей (-base) показывает, что выросло после изменения

Подробно

Шаги разбора памяти:

  1. Снять heap-профиль, через час — ещё один.
  2. go tool pprof -base heap1 heap2 — что выросло.
  3. list по функции — какие строки аллоцируют.

Бенчмарк:

go test -bench=Parse -benchmem -cpuprofile cpu.out
go tool pprof -http=:8080 cpu.out

Трассировка: go tool trace показывает работу планировщика, паузы GC и блокировки во времени.

Что хотят услышать

  • net/http/pprof и виды профилей.
  • Анализ: top, list, flame graph.
  • Поиск утечек горутин и памяти.
  • Бенчмарки с -benchmem.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Профилировать Go-код можно только сторонними платными инструментами
  • ✓Встроенный pprof: профили CPU, heap и goroutine
  • ✗Эндпоинт pprof стоит открыть в интернет, чтобы снимать профили с любой машины
  • ✗Профиль /goroutine бесполезен для поиска утечек горутин

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования