> Какие инструменты для профилирования сервисов на Go существуют и как их использовать (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Ozon
Стек: Go
> Пример ответа
Для профилирования Go-сервисов стандартный инструмент - встроенный pprof. Он позволяет собирать профили CPU, памяти, горутин, блокировок и mutex’ов. Использование: подключите net/http/pprof в HTTP-сервер (обычно на отдельном порту, например, :6060), после чего профили доступны по эндпоинтам /debug/pprof/. Для CPU-профиля: go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30 - соберёт данные за 30 секунд. Для памяти: go tool pprof http://localhost:6060/debug/pprof/heap. Затем в интерактивном режиме pprof можно анализировать топ-функции, граф вызовов (web), или экспортировать в SVG/PDF.
Дополнительно: pprof поддерживает сравнение профилей (например, до и после оптимизации) через -diff_base. Для продакшена используйте runtime/pprof для программного запуска профилирования без HTTP.
Другие инструменты: trace из пакета runtime/trace - для анализа задержек и параллелизма (запуск через go tool trace). pprof также интегрируется с expvar для кастомных метрик. Для распределённых систем - OpenTelemetry с профилированием через pprof и экспортом в Jaeger/Prometheus.
> Похожие задачи по Go
Как оптимизировать память при слиянии массивов?
Как прервать выполнение goroutine без остановки главной программы в Go
Какие способы общения между goroutine существуют в Go
Где размещать воркеры, читающие данные из Kafka и отправляющие в аналитику
> Похожие задачи по backend
Как оптимизировать память при слиянии массивов?
Как прервать выполнение goroutine без остановки главной программы в Go
Какие способы общения между goroutine существуют в Go
Где размещать воркеры, читающие данные из Kafka и отправляющие в аналитику
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью