Для чего в Go используется pprof?

CPU, heap и другие профили помогают найти причину расхода ресурсов. Почему диагностический HTTP-интерфейс нельзя бездумно открывать в интернет.

Короткий ответ

Что ответить на собеседовании

pprof помогает собирать и анализировать профили Go-приложения: CPU, живую память и выделения, горутины, блокировки. Это инструмент поиска узких мест, а не автоматический диагноз утечки. Профили выбирают под гипотезу и сравнивают на сопоставимой нагрузке. Доступ к диагностическим обработчикам должен быть ограничен.

Подробный разбор

Ответ с пояснениями

Профилирование отвечает на конкретные вопросы: где тратится процессорное время, в каких стеках выделены остающиеся живыми объекты, где ждут горутины. CPU-профиль основан на выборке выполнения, heap показывает информацию о памяти, а профили блокировок и mutex требуют соответствующей настройки сбора.

Для HTTP-доступа к диагностике используют net/http/pprof. Пример вспомогательного сервера для локальной диагностики:

import (
    "log"
    "net/http"
    _ "net/http/pprof"
)

func startLocalProfiler() {
    go func() {
        if err := http.ListenAndServe("127.0.0.1:6060", nil); err != nil {
            log.Printf("pprof server: %v", err)
        }
    }()
}

Функцию вызывают из приложения; профили затем анализируют через go tool pprof. Часть измерений, например CPU, собирается за выбранный интервал.

Импорт регистрирует обработчики на DefaultServeMux. Если основной публичный сервер использует тот же mux, диагностические маршруты могут оказаться доступны и там: разделяйте маршрутизаторы и проверяйте фактическую доступность. Привязка вспомогательного слушателя к loopback не защищает другой публичный mux.

Профили могут содержать чувствительные сведения, а сбор создаёт нагрузку. Используйте ограниченный доступ и согласованный интервал. Рост памяти сам по себе не доказывает утечку: сравнивайте удерживаемые объекты, объём выделений и характер нагрузки.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку