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.