Перейти к содержимому

Обзор ​

Пока выполняется синхронный код — огромный 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 }))

Опции ​

ОпцияТипПо умолчаниюОписание
thresholdnumber1000Самая короткая остановка в мс, о которой сообщается

Лог говорит, что цикл был заблокирован и на сколько, но не чем. Чтобы найти виновника, посмотрите трейсы того времени или профилируйте процесс.