Slow AWS SES Send Rate?

Hello.

  • We have a send rate with AWS of 20/sec.
  • I have the Amazon plugin (latest ver.) in phpList set to 15/sec.
  • We have only ever achieved a send rate of about 1.8 per second.
  • Sent using CRON (once triggered it runs consistently).

Can anyone tell me why this might be? Wondering if perhaps shared server (resources don’t spike when it’s running though) or some sort of setting in the config which was set in the very early days for testing.

I’ve included my queue and processing settings, although I’m not too sure what impact these have when using AWS plugin?

Cheers.

define ("MANUALLY_PROCESS_QUEUE",0);
define('MAX_PROCESS_MESSAGE',999);
define("MAILQUEUE_BATCH_SIZE",0);
define("MAILQUEUE_BATCH_PERIOD",3600);
define('MAILQUEUE_THROTTLE',0.5);
define('MAILQUEUE_AUTOTHROTTLE',0);

define('USE_DOMAIN_THROTTLE',0); define('DOMAIN_BATCH_SIZE',1); define('DOMAIN_BATCH_PERIOD',120);

define('DOMAIN_AUTO_THROTTLE',0);
define('MAX_PROCESSQUEUE_TIME',0);

Amazon Plugin Settings

AWS access key ID
user
AWS secret access key
key
SES region
eu-west-1
SES endpoint
https://email.eu-west-1.amazonaws.com/
Whether to use curl multi to send emails concurrently
Yes
The maximum number of emails to send concurrently when using curl multi, (between 2 and 32)
15
Whether to create a log file showing all curl multi transfers
No
Whether to generate verbose curl output (use only for debugging)
No

Using a calculator I settled on setting MAILQUEUE_BATCH_PERIOD to 54,000 and reduced MAILQUEUE_THROTTLE to 0.2. Tried on a small testing list of 77 and it was definitely faster.

Result:

[Sun 30 Apr 2023 11:05] [CL] 77 messages sent in 18.88 seconds (14680 msgs/hr)

vs old score

[Tue 25 Apr 2023 11:32] [CL] 77 messages sent in 43.11 seconds (6430 msgs/hr)

Still only works out as ~4/sec, so still not near the 15/sec I aimed for.

Does this look right or could there be a limit on our shared hosting interacting with the Amazon servers?

@UtopiaOperaX You seem to be misunderstanding the phplist batch and throttle settings. See the config_extended.php file for an explanation.
Also, the Amazon SES plugin documentation explains that it does not control the sending rate, see plugin:amazonses [phpList Resources]

Settings:

define(“MAILQUEUE_BATCH_SIZE”,54000); // ~15 per second over a period
define(“MAILQUEUE_BATCH_PERIOD”,3600); // a period is 1 hr
define(‘MAILQUEUE_THROTTLE’,0.1); // delay between email sending

Result was:

[Sun 30 Apr 2023 21:45] [CL] Started
[Sun 30 Apr 2023 21:45] [CL] Sending in batches of 54 messages
[Sun 30 Apr 2023 21:45] [CL] This batch will be 53,923 emails, because in the last 3,600 seconds 77 emails were sent
[Sun 30 Apr 2023 21:45] [CL] Processing has started,
[Sun 30 Apr 2023 21:45] [CL] One campaign to process.
[Sun 30 Apr 2023 21:45] [CL] Processing campaign 926
[Sun 30 Apr 2023 21:45] [CL] Looking for subscribers
[Sun 30 Apr 2023 21:45] [CL] Found them: 77 to process
[Sun 30 Apr 2023 21:45] [CL] Processed 77 out of 77 subscribers
[Sun 30 Apr 2023 21:45] [CL] It took 11 seconds to send this message
[Sun 30 Apr 2023 21:45] [CL] Script stage: 5
[Sun 30 Apr 2023 21:45] [CL] 77 messages sent in 11.33 seconds (24469 msgs/hr)

Which is about 6.4 per second.
I guess it’s the throttle which makes the difference to the overall sending rate?

My question is, is there an agreed upon consensus on these settings in regards to Amazon SES?

What is a general good throttle rate and does it affect deliverability with SES?

It seems quite hard to get a solid opinion on it searching around the net.

Thanks.

@UtopiaOperaX I think that the batch size and throttle were designed to handle web servers that limit the number of emails that can be sent, such as 1000/hour.

Unless Amazon SES has imposed a quota (mine is 200 emails per 24 hour period but I am in a sandbox) then you don’t need to use batch processing.

You want to restrict the sending rate, so the throttle probably needs to be in the order of milliseconds if you want to get a rate near 20/s. Just adjust the throttle untll you are happy.

1 Like