-
pprof: Стандартный инструмент профилирования Go (net/http/pprof для веб-серверов, runtime/pprof для приложений). Это позволяет вам:
-
Получите профиль горутины (/debug/pprof/goroutine), чтобы увидеть трассировки стека всех текущих горутин, что помогает идентифицировать заблокированные горутины или утечки.
-
Получите профили ЦП (/debug/pprof/profile) и памяти (/debug/pprof/heap), чтобы узнать, на что ваше приложение тратит время и память, что может выявить «горячие точки» в параллельном коде.
-
Посмотрите профили конкуренции мьютексов (/debug/pprof/mutex).
-
Метрики. Предоставляйте доступ к метрикам вашего приложения (например, с помощью клиентских библиотек Prometheus). Полезные показатели включают в себя:
-
Количество запущенных в данный момент горутин (метрика go_goroutines, предоставляемая клиентскими библиотеками). Постоянно увеличивающееся число может указывать на утечку.
-
Задержка и пропускная способность параллельных операций.
-
Длины каналов (если вы их инструментируете).
-
Ведение журнала. Стратегическое ведение журналов внутри горутин для отслеживания их прогресса, состояния и любых возникших ошибок.
-
Трассировка. Использование распределенной трассировки (например, OpenTelemetry) для отслеживания потока запроса между несколькими горутинами и службами.
-
Детектор гонки (-race): Хотя это в первую очередь инструмент разработки/тестирования, он крайне важен для обнаружения ошибок параллелизма перед развертыванием.
Вопросы и ответы по планировщику Go:
Итог
pprof: Стандартный инструмент профилирования Go (net/http/pprof для веб-серверов, runtime/pprof для приложений).