By default, AcyMailing tries to send messages using a single php thread.
It loads the first 200 e-mails from the queue and send them... then 15 minutes later (depending on your configuration), AcyMailing will load again the first 200 e-mails from the queue and send them... etc.
You can configure AcyMailing to use multiple php threads so each thread will send 200 e-mails.
That way you can increase your sending speed and each batch will still require the same amount of memory and process on your server.
Spreading the send process to the maximum you can is one of the best way to make sure your server won't be blacklisted.
We do not recommend this method if you send messages from your own server, please only use it if you use an external delivery service.
This method only works with our automatic send process (included in all our paid versions) and will require you to create your own cron tasks on your server.
Ready? Let's set it up
First, access the AcyMailing configuration page and configure the automatic send process to deliver 200 e-mails every 0 minute.
It's important to set the frequency to "0" but you can adapt the number of messages sent to what you want based on your server constraints.
Then create cron tasks on your own server to trigger AcyMailing every 5 minutes:
You should trigger a different url each time (if needed, you can check our documentation to create a cron on your server):
You can see the startqueue parameter is incremented every 400 e-mails.
This is done in purpose to make sure no thread will load the same messages from the queue.
Don't worry, if it happens Acy will automatically stop one of the two threads but still...
On the Acy configuration page there is an option to enable you to set the queue ordering the way you want...
Do NOT select the "random" ordering if you use the multiple queue send process!
How many cron jobs should I create?
That's up to you... and to your server performances.
We recommend you to start with 4 cron jobs maximum and then create additional ones if you want to speed up again the send process (you should make sure your server can handle them).
Don't forget that the cron will trigger your website every 5 minutes so each cron will send 200 e-mails every 5 minutes until your queue is empty.
If you have 10 000 subscribers and create 4 cron sending batches of 200 e-mails every 5 minutes, the whole send process will take a bit more than one hour (4*200*12=9600).
If you want to optimize even more the send process, you should trigger each cron at a different minute.
For example cron 1 will trigger your website every 5 minutes starting at minute 0 (so at 00:00, 00:05, 00:10, 00:15...)
So with the cron frequency : 0,5,10,15,20,25,30,35,40,45,50,55 * * * * *
Cron 2 will trigger your website every 5 minutes starting at minute 1 (so at 00:01, 00:06, 00:11, 00:16...)
So with the cron frequency : 1,6,11,16,21,26,31,36,41,46,51,56 * * * * *
Cron 3 will trigger your website every 5 minutes starting at minute 2 (so at 00:02, 00:07, 00:12, 00:17...)
So with the cron frequency : 2,7,12,17,22,27,32,37,42,47,52,57 * * * * *
Решение было как всегда под носом. Более того, возможности расширяет использование одной очереди на несколько сайтов отправителей.