Как понять, что в цикле событий (Event Loop) возникла проблема?

Замедление или зависание приложения, увеличение задержек (latency) при обработке запросов.

Короткий ответ

Что ответить на собеседовании

Замедление или зависание приложения, увеличение задержек (latency) при обработке запросов.

Подробный разбор

Ответ с пояснениями

Замедление или зависание приложения, увеличение задержек (latency) при обработке запросов.

Высокая загрузка CPU, часто близкая к 100%, при отсутствии интенсивных вычислений.

Постоянное увеличение использования оперативной памяти, не связанное с ростом данных (утечки памяти).

Несрабатывание запланированных операций (например, таймеров) или их срабатывание с большой задержкой.

Ошибки "Event loop is locking up" или подобные предупреждения в логах.

Использование инструментов мониторинга, показывающих длительное блокирование Event Loop:

  • Node.js core modules: process.hrtime.bigint() для измерения выполнения кода.
  • Профилировщики: node --prof для сбора данных о производительности.
  • Библиотеки для мониторинга Event Loop: blocked, eventemitter2 (в режиме отладки).
// Пример использования blocked для обнаружения блокировок
const blocked = require('blocked');

blocked((ms) => {
  console.warn(`Событийный цикл заблокирован на ${ms}ms`);
});

// Имитация блокирующей операции
function sleep(ms) {
  const start = process.hrtime.bigint();
  while (process.hrtime.bigint() - start < BigInt(ms * 1e6)) {
    // Блокирующий цикл
  }
}

sleep(100); // Вызовет предупреждение

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее