Короткий ответ
Continuous profiling строят на сэмплирующих профилировщиках с низкой частотой сэмплирования и агрегацией данных с части инстансов, а не со всех одновременно под полной нагрузкой, подбирая частоту и охват так, чтобы overhead оставался в пределах единиц процентов CPU, но статистической значимости хватало для выявления регрессий.
Как это работает подробнее
Сэмплирующий профилировщик периодически (например, раз в 10-20 мс) снимает текущий стек вызовов вместо перехвата каждого вызова функции, что кардинально дешевле инструментирующего профилирования; данные агрегируются по времени и по инстансам в хранилище профилей, позволяя сравнивать флейм-графы между релизами или периодами нагрузки.
- Компромисс. Более частое и широкое сэмплирование даёт точнее данные и быстрее ловит редкие регрессии, но пропорционально увеличивает overhead и риск самому стать причиной деградации под пиковой нагрузкой; редкое и выборочное профилирование безопаснее для продакшена, но может пропустить кратковременные проблемы. Решение зависит от чувствительности бизнеса к дополнительной задержке, зрелости observability-инфраструктуры и от того, насколько критична скорость обнаружения регрессий.
Пример кода
example.txt
Rollout continuous profiling:
10% подов, частота сэмплирования 19 Гц, overhead измерен на staging: ~1.5% CPU
результаты агрегируются в хранилище профилей с ретеншном 14 дней
алерт: если p95 latency растёт -> сравнить текущий флейм-график
с baseline за прошлую неделю для того же эндпоинтаЧто использовать на практике
- Практика. Разумный подход — включать профилирование не на 100% инстансов одновременно, а на ротируемом подмножестве (например, 5-10% подов в любой момент времени), снижая частоту сэмплирования под самой высокой нагрузкой; важно заранее измерить реальный overhead на staging под нагрузкой, близкой к продовой, а не полагаться на заявленные вендором цифры.
Подводные камни
- Риск. Включают профилирование сразу на всех инстансах с высокой частотой «чтобы не упустить момент», получая заметную деградацию; хранят сырые профили бесконечно без агрегации и ретеншна; делают выводы по профилю с одного инстанса, не учитывая вариативность нагрузки между инстансами и временем суток.