его использовать как планировщик задач - например с интервалом в секунду?
Например чтобы менять статусы у объектов которые истекли по времени.
Это зависит от множества факторов, какая посещаемость, какая серверная архитектура, какое масштабирование и т.д., для очень высоконагруженных проектов node js не подходит, только отчасти, где нужна скорость, там нужно смотреть в сторону СИ.
Да - я понимаю. Вопрос больше про надежность самого метода setInterval. Не отвалится ли в какой-то момент? Может ли долго работать без перерыва? Или лучше какой-нить внешний крон?
Лучше внешний крон, это 100%
Потому что опыт показывает, что js на бэке пока не идеален
👍понял - спасибо
нашел это утверждение очень любопытным, ты мог бы рассказать поподробнее какой то пример из своего опыта.
что значит не отвалится?
В какой-то момент перестанет работать или например забьет память всю
А есть объяснение почему он должен перестать работать в какой-то момент или забить память?
Нету, только слышал что такое возможно. Я как раз хотел узнать про такое объяснение если оно есть
У setInterval есть определенно два минуса 1. Неточность. Гарантированно, что колбек исполнится не раньше установленного времени. Но насколько "позже" по большей части зависит от загруженности ивентлупа и в процессора(от этого и внешний cron зависит) 2. Немаштабируемость. Если ты решишь запустить несколько процессов своего приложения, то у каждого инстанса будет так же запускаться setInterval А про "может перестать работать" или "забьёт память" это какое-то непонимание работы нода. В теории "забить память" можно через регистрацию кучи колбеков через setInterval, но вряд ли ты собираешься одновременно регистрировать миллионы колбеков
но это разве утечка будет а не голодание цикла?
Стек это заранее выделенная память, занимает где-то один мегабайт в V8. Если в стеке соберётся примитивов больше чем на этот 1 мб, то будет переполнение. Из-за (...arr) мы кладём все примитива массива в стек
я думал что все примитивы в куче и стек имеет ограниченную память которой достаточно лишь для 16000 вызовов или сколько там, и никакая статика туда не попадает
Обсуждают сегодня