2012-05-14 9 views
5

Enviar medio millón de correos electrónicos lleva demasiado tiempo: de 6 a 8 horas. La cuota permite 90 correos electrónicos por segundo. Envío desde un servidor dedicado con buen rendimiento, por lo que la memoria/conexión no debería ser el problema. Usando lotes de 50 correos electrónicos a la vez.¿Cómo acelerar el envío de correo a través de Amazon SES?

Número variado de emais en un lote: más de 50 causas errores de CURL: parece que no hay respuesta de Amazon a algunos de los hilos. Incluso con 50 en un lote y una pausa de 1200ms entre lotes, cada mensaje de correo recibe varios inconvenientes.

Por lo tanto, un lote promedio de 50 toma de 4 a 6 s para completar una pausa de + 1.2 s, bastante larga para enviar 500 000 correos diarios.

Por favor, aconseje cómo sintonizar el envío de correos para acercar su velocidad a los 90 correos/s.

+1

90 correos/seg. Y el promedio de envíos soportados no es necesario. Verificación con Amazon en el rendimiento admitido (es decir, por hora) y los enfoques recomendados pueden ser una buena idea. –

+0

Un solo lote de 90 correos electrónicos sale normalmente. Es el modo de "producción" donde surgen los problemas. – Serge

+0

Tengo el mismo problema :(Planeo enviar 1 millón de correos electrónicos. Escribí un script usando PHPMailer para enviarlo a SES. Probé con 5 correos electrónicos y me llevó 10 segundos. Cuando encendí el modo de depuración encontré que cada vez que se envía un correo electrónico, PHPMailer repite el mismo proceso: abra una conexión con Amazon SES, autentíquese, envíe el contenido del correo electrónico y reciba el resultado del envío. Sería más rápido si podemos abrir la conexión y autenticar de una vez por todas, luego cerrar. no estoy seguro de si este es tu caso. ¿Qué utilizas para enviar correos electrónicos? –

Respuesta

0

¿Qué tal si ejecuta varios trabajos en paralelo? De esta forma, el daño potencial de cada error de cURL se reduce. Comience con dos trabajos, donde cada uno tiene sus pausas y límites ajustados en consecuencia.

También debe asegurarse de configurar los tiempos de espera de cURL. Configure CURLOPT_CONNECTTIMEOUT y CURLOPT_TIMEOUT como mínimo.

Cuestiones relacionadas