SES를 통해 전자 메일을 보내는 PHP 기반 응용 프로그램 (t2.medium 인스턴스에서 실행)과 둘 다 같은 지역에 있습니다 . 이 앱은 올해 초에 출시되었으며 이메일을 보내는 것은 몇 달 동안 제대로 작동했습니다. 우리는 최근 mailgun을 통해 전송하도록 전환 했으므로 (우리가 가진 문제에 대한 자세한 정보를 얻을 수는 있지만) SES 설정을 변경하지 않았습니다. (참고 : 시간당 50,000 개의 이메일을 보내도록 승인되었습니다.)Amazon AWS : SES를 통한 전자 메일 보내기가 매우 느림
전자 메일도 보내는 응용 프로그램 용 보조 유틸리티를 작성했으며이 용도로 SES를 계속 사용하기로 결정했습니다. 유용. 간단한 코드 버전이 다음과 같습니다. 아주 간단한
<?php
require_once dirname(__FILE__) . '/PHPMailer-master/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'email-smtp.us-west-2.amazonaws.com';
$mail->SMTPAuth = true;
$mail->Username = 'my_user_name';
$mail->Password = 'my_password';
$mail->SMTPSecure = 'tls';
$mail->From = 'from_sender';
$mail->FromName = 'WebTeam';
$mail->IsHTML(true);
$oldt = microtime(true);
while(true) {
$first_name = 'first_name';
$email = 'to_recipient';
$strCnt = 'many';
$subject = "Lots of great new things to buy";
$body = "<p>" . $first_name . ",</p>";
$body = $body . "<p>You have ' . $strCnt . ' new things to buy waiting for you. Don't let them slip by! ";
$body = $body . "Click <a href='http://fake_url.com'>here</a> to see them!</p>";
$body = $body . "<p>The Web Team</p>";
$mail->addAddress($email);
$mail->Subject = $subject;
$mail->Body = $body;
$newt = microtime(true);
echo 'email build done: ' . $newt - $oldt . PHP_EOL;
$oldt = $newt;
if(!$mail->send(true)) {
echo 'error sending email: ' . $mail->ErrorInfo . PHP_EOL;
} else {
$newt = microtime(true);
echo 'email sent: ' . $newt - $oldt . PHP_EOL . PHP_EOL;
$oldt = $newt;
}
$mail->ClearAllRecipients(); // added line
}
?>
(유틸리티가 데이터베이스 호출 등을 만드는 것을 그것은 명백해야한다) 나는 가능한 한 실제 유틸리티에 가까운이 테스트 프로그램의 레이아웃을 유지합니다!
하지만 여기에는 문지름이 있습니다. 처음 실행했을 때 첫 번째 이메일의 전송 시간은 1 초 미만이었고 두 번째 이메일의 전송 시간은 31 초 였고 세 번째 이메일의 전송 시간은 191 초였습니다. 그런 다음 한 줄의 코드를 추가하고 프로그램을 다시 실행했습니다. 이번에는 첫 번째 이메일을 보내는 데 63 초가 걸렸습니다. 약 20 분 후에 프로그램을 세 번 실행했습니다. 이번에 처음 세 개의 이메일은 각각 1 초 이내에 보내졌지만 네 번째 이메일은 191 초가 걸렸습니다. 나는 다섯 번째 시간을 뛰었으며 첫 번째 이메일은 보내는 데 135 초가 걸렸습니다. (모든 이메일을 수신했음을 유의하십시오.)
도대체 무슨 일이 벌어지고 있습니까? 더 중요한 것은 어떻게 문제를 해결할 수 있습니까?
소리가 난다. 'us-west-2'는 시간당 50k 개의 이메일을 전송하도록 승인받은 지역입니까? –