Сколько одновременных запланированных заданий я могу иметь в узле

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

Я думаю об использовании Node-schedule для этой задачи.

Для каждой встречи: установите будущую дату, отправьте письмо с напоминанием один раз и удалите это конкретное запланированное задание.

Но... может быть МНОГО назначений, когда приложение разрастется, и это означает, что будет МНОГО процессов Node-schedule, одновременно спящих и ожидающих запуска...

В обычный день давайте представим, что у нас забронировано 180 встреч на будущее для каждого клиента, и давайте представим, что прямо сейчас у приложения 50 клиентов. Это дает нам около 9000 запланированных задач, ожидающих запуска.

Вопрос. Это нормально? ... или все эти одновременно запланированные задачи будут слишком много?


person Anders Östman    schedule 18.09.2013    source источник


Ответы (1)


Короткий ответ: 9000 — это не много, можете идти. Тем не менее, я бы посоветовал вам написать бенчмарк, чтобы убедиться в этом самостоятельно.

Я проверил источник node-schedule и, конечно же, он делегирует планирование setTimeout для задач, основанных на дате. Это означает, что ваши задания планируются с использованием внутреннего цикла событий node.js.

Этот код очень эффективен, так как node.js заточен под одновременную обработку нескольких тысяч запросов.

Независимо от количества ожидающих заданий, node.js будет заботиться только о следующей задаче и будет спать до ее даты (если только ее не прерывает асинхронный ввод-вывод), поэтому планирование задачи по сути является O (1).

person Laurent Perrin    schedule 18.09.2013