Skip to content

Профилирование с помощью Go pprof ​

В RUSEON Core встроен стандартный профилировщик среды выполнения Go (net/http/pprof), доступный на порту сервера метрик (по умолчанию: :9090). Профилирование позволяет диагностировать узкие места CPU, утечки памяти, зависшие горутины и конкуренцию за блокировки прямо на работающем сервере без остановки сервиса.


1. Каталог эндпоинтов профилирования ​

ЭндпоинтСобираемые данныеНазначение диагностики
/debug/pprof/profile?seconds=30Профиль сэмплирования CPUПоиск "горячих" функций и узких мест трансмуксинга
/debug/pprof/heapСнимок памяти в кучеПоиск утечек памяти и неконтролируемых аллокаций
/debug/pprof/goroutineСтеки активных горутинОбнаружение зависших горутин и дедлоков
/debug/pprof/mutexСобытия конкуренции блокировокИзмерение времени ожидания на sync.RWMutex
/debug/pprof/allocsНакопленные аллокацииОценка нагрузки на сборщик мусора (GC)

2. Снятие и анализ профилей ​

Запись 30-секундного профиля CPU ​

bash
# Запись 30 секунд профиля CPU с работающего сервера
go tool pprof http://localhost:9090/debug/pprof/profile?seconds=30

В интерактивной консоли pprof:

text
(pprof) top20
(pprof) list RingBuffer.WriteFrame

Веб-интерфейс и Flamegraph (Флеймграфы) ​

Запуск интерактивного браузерного дашборда с интерактивным флеймграфом:

bash
go tool pprof -http=:8081 http://localhost:9090/debug/pprof/profile?seconds=30

Анализ профиля кучи (Heap) и горутин ​

bash
# Сохранение снимка кучи в локальный файл
curl -s http://localhost:9090/debug/pprof/heap > heap.pprof

# Анализ снимка в браузере
go tool pprof -http=:8081 heap.pprof

# Просмотр списка всех горутин в текстовом виде
curl -s http://localhost:9090/debug/pprof/goroutine?debug=1

Непрерывное профилирование (Pyroscope / Parca) ​

Стандартные pprof-эндпоинты RUSEON Core напрямую интегрируются с агентами непрерывного профилирования (Continuous Profiling), такими как Grafana Pyroscope:

yaml
# Пример конфигурации сбора для Pyroscope
scrape_configs:
  - job_name: "ruseon-profiling"
    static_configs:
      - targets: ["ruseon.internal:9090"]

Связанная документация ​

Released under the MIT License.