Сбой очереди сообщений в среде AWS VPC
У меня есть система, которая отправляет электронные письма и ставит их в очередь, если объем увеличивается.
Если это 1 или 2 электронных письма в час, это отправляет хорошо.
В более загруженное время очередь резервируется, и вскоре отправка электронной почты начинает сбой.
Я проверил нагрузку на SMTP-сервер с моего локального компьютера - никаких проблем там нет.
Тем не менее, когда я пытаюсь выполнить нагрузочное тестирование с моего сервера EC2
- который находится в частной подсети VPC
- где исходящий трафик проходит через NAT
- и где мы настроили наш собственный DNS-сервер
первые несколько выходят нормально - а остальные начинают выбрасывать ошибки.
Вот CSt исключение ToString()
System.Net.Mail.SmtpException: Failure sending mail. ---> System.Net.WebExcept
ion: Unable to connect to the remote server ---> System.Net.Sockets.SocketExcept
ion: A connection attempt failed because the connected party did not properly re
spond after a period of time, or established connection failed because connected
host has failed to respond [SMTPServerIP]:25
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddre
ss socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Sock
et s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state,
IAsyncResult asyncResult, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.ServicePoint.GetConnection(PooledStream PooledStream, Object ow
ner, Boolean async, IPAddress& address, Socket& abortSocket, Socket& abortSocket
6)
at System.Net.PooledStream.Activate(Object owningObject, Boolean async, Gener
alAsyncDelegate asyncCallback)
at System.Net.PooledStream.Activate(Object owningObject, GeneralAsyncDelegate
asyncCallback)
at System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncD
elegate asyncCallback, Int32 creationTimeout)
at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint)
at System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint)
at System.Net.Mail.SmtpClient.GetConnection()
at System.Net.Mail.SmtpClient.Send(MailMessage message)
--- End of inner exception stack trace ---
at System.Net.Mail.SmtpClient.Send(MailMessage message)
at ConsoleApplication2.Program.Main(String[] args) in c:\ConsoleApplication2\
Program.cs:line 49
Я почти уверен, что это не проблема кода - скорее всего, настройка на NAS или DNS. Может ли кто-нибудь указать мне правильное направление?
1 ответ
После еще одного поиска в Google - кажется, что газ на стороне AWS
Источник: http://aws.amazon.com/ec2/faqs/
В: Существуют ли какие-либо ограничения в отправке электронной почты из экземпляров EC2?
Да. Чтобы поддерживать качество адресов EC2 для отправки электронной почты, мы устанавливаем ограничения по умолчанию на объем электронной почты, который можно отправлять с учетных записей EC2. Если вы хотите отправить большее количество писем из EC2, вы можете подать заявку на удаление этих ограничений из своей учетной записи, заполнив эту форму.
Лучше подробности здесь: