@kirill-93

От чего зависит максимальное количество асинхронных запросов и можно ли таким образом отправлять почту?

Добрый день!
Есть порядка 120 тысяч email адресов посетителей. Раз в месяц делаем рассылку через сендгрид. По началу делал на php и вся рассылка занимала 8-10 часов. Затем переписал код на nodejs и теперь из-за асинхронности, вся рассылка происходит за 20-30 минут.
У меня несколько вопросов:
1) Как я понимаю, в отличие от реализации на php, код на nodejs отправляет запросы и не дожидается ответа. Ответ приходит асинхронно. Но на что тогда тратятся 30 минут? На установку соединения и отправку запроса? То есть асинхронность только в том, что мы не дожидаемся ответа?
2) От чего зависит скорость отправки? Вот у меня 120 000 отправляются за 30 минут. Можно ли это ускорить?
3) Правильно ли так отправлять почту? По данным из личного кабинета сендгрида следует, что вроде бы все письма отправились, но меня смущает интенсивность запросов. Хотя про лимиты на обрещения я у них нигде не нашел информации.

Спасибо.
  • Вопрос задан
  • 161 просмотр
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
Как можно обсуждать различия реализации если ни одну из двух реализаций не видим.
Но все равно у вас в обоих случаях работает один процесс и шлет по очереди. И работает это медленно.

Гуглите Gearman/Beanstalkd/RabbitMQ
Если поднять несколько воркеров для отправки, то скорость увеличится в N раз.
Обычно по количеству ядер/потоков процессора на сервере.

Если отправлять пачками, то еще быстрее будет, там и воркеры можно не поднимать будет даже, зависит уже от реализации рассылки конкретно.
Ответ написан
@vshvydky
https://nodejs.org/api/cli.html#cli_uv_threadpool_... попробуй поиграть с этим параметром, по идее все сетевые коммуникации идут на слое си и выполняются в тредах либюв, по дефолту их всего 4, расширяется до 1024
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы