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 вместе.
  • Зафиксируйте выводы и регрессионную защиту.