back to phpList.org

"Over configuration" of queue and load management (?) - help needed

Hello,
My PHPLIST runs on a shared server. I have over 3000 addresses in my list, and wish to limit sending to 140 emails per hour.
My settings:
Cron job set to run every 20 minutes.
MAILQUEUE_BATCH_SIZE = 140
MAILQUEUE_BATCH_PERIOD = 3600
MAILQUEUE_THROTTLE = 25
MAILQUEUE_AUTOTHROTTLE = 0
USE_DOMAIN_THROTTLE = 0
MAX_PROCESSQUEUE_TIME = 0

I think I “Over configured” something, because I get process messages with info such as:

[Sun 29 Mar 2020 03:40] [CL] Started
[Sun 29 Mar 2020 03:40] [CL] Sending in batches of 140 messages
[Sun 29 Mar 2020 03:40] [CL] This batch will be 90 emails, because in the last 3,600 seconds 50 emails were sent
[Sun 29 Mar 2020 03:40] [CL] Processing has started,
[Sun 29 Mar 2020 03:40] [CL] One campaign to process.
[Sun 29 Mar 2020 03:40] [CL] Processing campaign 3
[Sun 29 Mar 2020 03:40] [CL] Looking for subscribers
[Sun 29 Mar 2020 03:40] [CL] Found them: 2010 to processProcess Killed by other process
[Sun 29 Mar 2020 04:00] [CL] Error: Process Killed by other process
[Sun 29 Mar 2020 04:00] [CL] Script stage: 5
[Sun 29 Mar 2020 04:00] [CL] 48 messages sent in 1209.13 seconds (142 msgs/hr)

So now the sending is too slow, because idle times are created. What should I fix?

Many thanks!
Guy

@phplistguy It appears that your cron job is running every 20 minutes.

It will be simpler to set the batch size to be the number of emails to be sent by each run of the cron job, so 140 / 3 =, 46, and set the throttle to a lower value to ensure that phplist does complete the sending within 20 minutes.
Also change the batch period to be a small number, it is not really useful when processing the queue by command line or cron job.

Thank you! It sounds so simple when you explain it like that… Syncing batch configuration with cronjob timing. I will try it on the next campaign sending.
It would be useful that your kind of explanation will be included in the phplist tutorial!

Update: I tried to sync cronjob timing with batch timing: defined the cronjob to run every 30 minutes, and defined the batch to be 70 emails in 1800 seconds. But that did not work. For some reason there was a mismatch of one email count (as if only 69 were sent), so the next batch was 1 email only, wasting most of the half hour… So I increased the batch period to 1900, indeed the 70 emails were identified but then no email was sent on the next batch. So finally I defined a batch of one hour - 140 emails, 3600 seconds, and set the cronjob to run every 10 minutes. That gave the best result.