advanced
Профилирование
Используйте CPU profiles, heap snapshots, flamegraphs, traces и production-safe sampling, чтобы доказать, куда уходят время и память.
Профилирование показывает, куда уходят CPU и память, вместо догадок. Для Node.js — CPU profiles (flamegraphs), heap snapshots, async hooks/traces и APM transaction traces с production-safe sampling где возможно.
| Инструмент | Ответы | |------------|--------| | CPU profile | Горячие функции, sync JSON, regex catastrophes | | Heap snapshot | Удерживаемые объекты, утечки closure | | Clinic.js / 0x | Event-loop delay, давление GC | | APM trace | Медленные spans на запрос |
node --cpu-prof server.js
# или: clinic flame -- node server.js
Профилируйте под **репрезентативной нагрузкой**, не idle localhost. Сравнивайте до/после deploy. Широкие полосы во flamegraph — cumulative time; идите вниз к root cause.
На интервью: sampling vs overhead instrumentation; безопасный production profiling; чтение flamegraphs; когда логи лучше профиля.
Типовые ошибки: только dev machine; микро-бенчмарки; игнор GC pauses; нет связки profile с traces.
Компромисс — overhead observability против уверенности в целях оптимизации.
Чеклист:
- Воспроизведите slowness под нагрузкой.
- CPU + trace на один запрос.
- Чините широкий frame, не random micro-opt.
- Проверка перцентилей после deploy.