> Какие методы профилирования и поиска утечек памяти существуют (Go)

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

Компании: amoCRM, Wildberries

Стек: Go

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

В Go для профилирования и поиска утечек памяти используются встроенные инструменты из пакета runtime/pprof и net/http/pprof. Основные методы:

  1. CPU-профилирование - записывает, на что тратится процессорное время. Запускается через pprof.StartCPUProfile() или эндпоинт /debug/pprof/profile. Помогает выявить "горячие" участки кода.

  2. Heap-профилирование - показывает текущее выделение памяти и объекты в куче. Доступно через /debug/pprof/heap. Позволяет обнаружить утечки, сравнивая снимки памяти через go tool pprof -base.

  3. Goroutine-профилирование - отображает стек вызовов всех горутин. Утечки часто связаны с "зависшими" горутинами, которые не завершаются. Эндпоинт /debug/pprof/goroutine.

  4. Allocs-профилирование - показывает все выделения памяти с момента старта программы, полезно для поиска избыточных аллокаций.

  5. Mutex-профилирование - помогает найти блокировки, которые могут приводить к накоплению горутин.

Инструменты анализа:

  • go tool pprof - интерактивный анализатор профилей (команды top, list, web).
  • pprof с опцией -diff_base для сравнения двух снимков кучи.
  • pprof с -http для визуализации в браузере (графы, flame graph).

Специфические методы для Go:

  • Использование runtime.ReadMemStats для логирования метрик памяти в production.
  • Применение go test -benchmem для бенчмарков.
  • Анализ утечек через runtime.SetFinalizer или кастомные трекеры объектов.

Пример подхода:

  1. Запустить приложение с /debug/pprof.
  2. Сделать снимок кучи (curl .../debug/pprof/heap > heap1.out).
  3. Выполнить нагрузочный тест.
  4. Сделать второй снимок (heap2.out).
  5. Сравнить: go tool pprof -base heap1.out heap2.out.
  6. В интерактивном режиме выполнить top10 - увидеть объекты, которые не освобождаются.

Для production-систем рекомендуется использовать net/http/pprof с ограничением доступа и автоматический сбор профилей через pprof в CI/CD.

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

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