Какое количество писем в час отправляется из сценария ASP.NET C # на сервере Windows? - PullRequest
0 голосов
/ 25 февраля 2011

Мы регулярно рассылаем массовые электронные письма (без спама, разумеется, только новостные рассылки) для наших клиентов, используя серверы Windows 2003, 2008 и 2008 R2 в Германии и США, и количество писем, которые нам удается отправить за один Время работы варьируется от 5.000 до 12.000, в зависимости от того, используем ли мы папку получения, локальный SMTP или коммерческий SMTP-сервер. Мы используем простые простые сценарии со стандартными библиотеками .NET или компонентами MailBee.

Это хорошо? Средний? Плохой? Есть ли очевидное узкое место (т. Е. Имеет ли смысл писать многопоточные скрипты или это соединение с почтовым сервером ограничивает скорость?)?

1 Ответ

2 голосов
/ 25 февраля 2011

Есть несколько вещей, которые ограничат производительность этого процесса вне любого написанного вами кода.

  1. Пропускная способность Интернета на сервере, на котором отправляются электронные письма.
  2. Куда отправляются эти письма. То есть ваш SMTP-сервер в конечном итоге должен соединиться и связаться с сервером провайдера электронной почты получателя электронной почты для отправки электронной почты. Некоторые серверы работают медленно, некоторые заняты, и для их подключения требуется много времени.

Что касается использования нескольких потоков для ускорения, ну где же замедление?

Отправка (и получение) электронной почты, в основном, связана с операциями ввода-вывода. перебрасывание потоков при этой проблеме может или не может улучшить производительность. Все зависит от того, есть ли где-то узкое место (в коде), если вы просто ограничены вычислительной мощностью или пропускной способностью сервера.

Ознакомьтесь с этой статьей SO Я ответил, где предоставил многопоточное решение, которое может помочь. По сути, он использует технику параллельного программирования, называемую « Data Parallel », где рабочая нагрузка по существу разбивается на несколько кусков, а затем каждый блок обрабатывается потоком, сохраняя количество блоков равным (или близким к) количество ядер на машине.

...