Является ли хорошей идеей использовать Database Mail в качестве сервера ретрансляции электронной почты?
Одна из наших проблем заключается в том, что наш сервер исходящей электронной почты иногда сосет. Пользователи запустят электронное письмо в нашем приложении, и приложение может потратить порядка 30 секунд, чтобы его отправить. Давайте сделаем это еще хуже и допустим, что мы даже не делаем это в фоновом потоке, поэтому пользователь полностью заблокирован в это время. База данных SQL Server Mail была предложена в качестве решения этой проблемы, поскольку она в основном реализует очередь сообщений и физически ближе и намного более отзывчива, чем наш сторонний почтовый хост. По общему признанию, это очень просто реализовать для нас, так как он просто заменяет один вызов SmtpClient.Send
с выполнением хранимой процедуры. Большая часть электронной почты нашего приложения содержит файлы PDF, XLS и т. Д., И я видел, что размер этих вложений достигает 20 МБ.
Использование Database Mail для обработки всей электронной почты нашего приложения плохо пахнет для меня, но мне трудно отговаривать кого-либо от него, учитывая крайне низкую стоимость внедрения. Наш производственный сервер баз данных слишком мощный, поэтому я не уверен, что он не справится и с нагрузкой. Есть идеи или безопасные альтернативы?
2 ответа
Все, что вам нужно сделать, это запустить его через SMTP-сервер, и если вы планируете отправлять большое количество почты, вам придется не только балансировать нагрузку на серверы (и DNS-серверы, если вы планируете отправлять 100K). + почты за раз), но убедитесь, что на ваших исходящих почтовых серверах есть правильные записи A, зарегистрированные в DNS для предотвращения отказов.
Это дешевое решение (за вычетом расходов на балансировщик нагрузки).
Да, используйте двойной сервер для внутренней сети и Интернета и убедитесь, что это только исходящий сервер. Начните с одного SMTP-сервера, и, если у вас сразу возникли проблемы с сетью, посмотрите, не связано ли это с памятью, диском, сетью или нагрузкой. Если его нагрузка связана, то, возможно, пришло время взглянуть на балансировку нагрузки. Если это связано с памятью, добавьте больше памяти. Если это связано с диском, бросьте в него массив raid 0+1. Если это связано с сетью, используйте большую трубу.