advanced
Profiling
Используйте measurements: event-loop delay, CPU profiles, heap snapshots, flamegraphs и production-safe sampling.
Профилируйте по измерениям, не по догадкам — в Node есть production-safe инструменты:
| Инструмент | Показывает | |------|---------| | `perf_hooks.monitorEventLoopDelay` | Простои, блокирующие I/O и таймеры | | `node --cpu-prof` / clinic.js | Горячие JS-функции | | Heap snapshot (`heapdump`) | Удерживаемые объекты | | Async hooks / tracing | Медленные async-операции |
import { monitorEventLoopDelay } from 'node:perf_hooks';
const h = monitorEventLoopDelay({ resolution: 20 });
h.enable();
console.log(h.mean / 1e6, 'ms mean delay');
Сэмплируйте в staging при реалистичном QPS до тяжёлых профайлеров в prod. Flamegraph: ширина = время — сначала плато, не узкие пики.
На интервью: как отличили блокировку loop от памяти и внешней зависимости; безопасный profiling в prod.
Типовые ошибки: оптимизация холодных путей; один snapshot на idle; игнор пауз GC.
Компромисс — между простотой, производительностью, безопасностью и эксплуатацией: назовите, что оптимизировали и какую цену приняли.
Чеклист:
- Baseline до изменений.
- Нагрузка в staging.
- CPU profile + loop delay вместе.
- Зафиксируйте выводы и регрессионную защиту.