Обзор
Пока выполняется синхронный код — огромный JSON.parse, тяжёлый для CPU цикл, синхронный вызов файловой системы, — Node больше ничего не может делать: каждый запрос, который обрабатывает процесс, стоит, но ничего не бросает. eventLoopBlockIntegration замечает такие остановки и отправляет на каждую лог уровня warn:
Event loop blocked for 1840msс длительностью остановки в атрибуте duration. Это серверный аналог браузерной slowHandlerIntegration.
Работает через лёгкий таймер, который проверяет, не сработал ли он с опозданием. Сам по себе таймер процесс живым не держит.
Использование
ts
import { use } from '@buglapse/node'
import { eventLoopBlockIntegration } from '@buglapse/node/integrations'
use(eventLoopBlockIntegration())
// сообщать и о более коротких остановках:
use(eventLoopBlockIntegration({ threshold: 200 }))Опции
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
threshold | number | 1000 | Самая короткая остановка в мс, о которой сообщается |
Лог говорит, что цикл был заблокирован и на сколько, но не чем. Чтобы найти виновника, посмотрите трейсы того времени или профилируйте процесс.