В Go 1.25 в стандартную библиотеку завезли
trace.FlightRecorder — кольцевой буфер трассировки, который постоянно крутится в памяти, а по команде Snapshot() отдаёт последние N секунд событий рантайма. Идея: сэмплирующий профайлер видит «среднюю температуру», а тут вы получаете полную картину именно того момента, когда всё пошло не так.Пара примеров:
▪️ Ловля хвостовых задержек
Мидлварь замеряет время обработки запроса, и если оно перевалило за исторический p95 (или прилетела 500-ка) — асинхронно дёргается снапшот.
Бинарный дамп улетает в S3, ссылка логируется в Grafana. Сработал алерт → кликнули по ссылке → скачали дамп →
go tool trace slow-trace.out. ▪️ Проблемы шедулера и GC
Всё, что живёт между сэмплами профайлера: залипания горутин, GC assist, вытеснение горутин с P — на трассе это видно, в профиле нет.
Но есть и обратная сторона: формат данных не дружит с Pyroscope и Datadog, поэтому дамп нельзя просто открыть в дашборде — приходится вручную гонять
go tool по конкретному поду. А когда подов больше тысячи, удовольствие ниже среднего. Инструмент мощный, эргономика — пока нет.💬 А вы пробовали FlightRecorder? Для чего включали, что нашли такого, чего не показал pprof, и как вытаскивали трейсы с прода?
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
#GoToProduction
