Я использую Amazon SES в качестве своего SMTP-транспорта
В моем опыте использования SES время ответа API минимум , которое я видел, было вдвое меньше.второй диапазон, в то время как средний колебался около одной секунды.Это не ограничение соединения, TCP / IP, доступной полосы пропускания и т. Д., А их обработка запросов на соединение.Другие на официальных форумах поддержки сообщают то же самое.Транспорт SMTP не работает быстрее.
Единственный способ отправить быстрее - это отправлять параллельно.Это подход, который они рекомендовали на своих официальных форумах поддержки.
SES API разрешает несколько одновременных подключений, пока вы остаетесь в квоте «почты в секунду».Если вы не знаете свою текущую квоту в секунду, проверьте статистику отправки.Я не знаю, что описатели транспорта SMTP превышают это ограничение.
Для параллельной отправки большего объема почты мы изменили наш процессор очереди, чтобы он мог работать параллельно.Чтобы письма никогда не отправлялись дважды, мы добавили в таблицу столбец «PID x grabbed this» и выполнили запрос, аналогичный UPDATE Queue SET selected_pid = ? WHERE target_ts < NOW() AND selected_pid IS NULL LIMIT X
.Затем мы будем искать письма, которые мы можем отправить, отправлять их все, и затем повторять попытки, пока у нас не закончатся письма, которые нам нужно будет отправить за этот период.
Мы также изменили код, который заполняеточередь, чтобы гарантировать, что в очереди никогда не будет больше писем, чем мы могли бы отправить.Мы смогли сделать это, потому что мы отправляем почту партиями.Когда у вас есть постоянный поток писем, есть вероятность, что вам не придется перепрыгивать через это кольцо.Просто убедитесь, что ваш отправляющий код знает, как правильно реагировать на различные ошибки превышения квоты.
В качестве альтернативы процессору очереди на основе cron, рассмотрите возможность использования Gearman для настройки набораасинхронных фоновых работников для отправки почты.