DevNotes Live
6 subscribers
84.2K photos
12K videos
195 files
35.4K links
Автоматический агрегатор IT ресурсов в Telegram (@devnotes_robot)
Информация: https://t.me/devnotes_live/121
Download Telegram
process.nextTick: невидимый убийца event loop, который кладет production-сервисы

Кажется, что все знают про process.nextTick, но на практике я регулярно вижу, как он валит продакшен. Проблема в том, что он имеет высший приоритет в микротаск-очереди и выполняется до любого I/O и таймеров. Это делает его опасным при рекурсивном использовании.

Как рекурсивный nextTick убивает таймеры

Event loop после каждого макротаска вычищает все микротаски. process.nextTick — микротаск с наивысшим приоритетом. Рекурсия без выхода блокирует очередь:

function recursiveTick() {
process.nextTick(recursiveTick);
}
recursiveTick();


После первого макротаска event loop заходит в микротаски. Там recursiveTick добавляет новый nextTick. И так бесконечно. setTimeout и setInterval не запускаются — они в макротасках, а микротаски не кончаются.

Production-кейс с кэшем и БД

У нас система с кэшем при ошибке доступа к БД в nextTick крутила переинициализацию соединения. В ошибочном сценарии — рекурсия. Результат: health-check’и молчали (таймеры не работали), входящие запросы висели, сервис падал веером. Типичная ошибка — думать, что nextTick безопасен для retry-логики.

Практические решения

* Никогда не используйте рекурсивный nextTick. Вместо него setImmediate — он ставит задачу в следующую фазу event loop, давая I/O и таймерам шанс:

function safeRecursive() {
// логика
setImmediate(safeRecursive);
}


* Если очередь нужна, добавьте лимит итераций. После, скажем, 1000 вызовов — принудительный yield через setTimeout(fn, 0).

* Для длинных цепочек используйте библиотеки для backpressure, иначе даже без бесконечной рекурсии производительность упадет.

Вывод:
process.nextTick ломает кооперативную природу event loop, и даже короткая рекурсия может полностью парализовать I/O и таймеры в production.
Forwarded from Dezzigners
This media is not supported in your browser
VIEW IN TELEGRAM
🧰 Tooltip Creator — поможет быстро добавить комментарии и подсказки поверх готовых экранов

Dezzigners
Терапия, которая реально помогает, а не вот это вот все 🧠
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from ai.dot(ufna, dev)
Правильное решение проблем в фентезийном мире.

Бтв, обожаю этот канал нейромультов, там прям клёво автор по стилю стал делать, и сюжетка огонь.
Forwarded from ai.dot(ufna, dev)
До конца 2026 года дизайнеров интерфейсов станет намного меньше

Статья рассказывает о том, как автор перестал получать запросы на разработку интерфейсов за последний год. Он делится своими мыслями и наблюдениями по этому поводу

Читать на дизайнерс | #статья