Sobes.tech
Back to questions
Middle+
280
questionbank

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

Sobes Copilot

Get answers in real time

Answer from AI

sobes.tech AI

Замедление или зависание приложения, увеличение задержек (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); // Вызовет предупреждение