Process Queue stuck on "Waiting" - batch Processing & Throttle settings

I’ve recently upgraded from version 2.10.19 to 3.2.5 as I had a disastrous mailout happen where we clicked on process queue a few times and various users received up to 12 copies of the email we were sending out.

Now, on the upgraded new installation, I have a mailout being processed and it’s got stuck on 535 emails remaining and it saying "waiting’. It’s been like this for about 3 hours and I’m scared to press process queue again in case everybody receives the email more than once.

The throttling parameters for this installation are as follows:

define(‘MAILQUEUE_BATCH_SIZE’, 150);

define(‘MAILQUEUE_BATCH_PERIOD’, 600);

define(‘MAILQUEUE_THROTTLE’, 4);

define(‘MAILQUEUE_AUTOTHROTTLE’, 0);

define(‘USE_DOMAIN_THROTTLE’, 0);
define(‘DOMAIN_BATCH_SIZE’, 1);
define(‘DOMAIN_BATCH_PERIOD’, 120);

define(‘DOMAIN_AUTO_THROTTLE’, 1);

Please can anyone suggest what I can do to get the emails firing out again without endangering users receiving the email more than once?

Also . . . if anyone has any comments on my settings for the throttle/batch processing parameters I would most appreciate the help/advice.

Many thanks

Phil

It might not matter, but I’d put the DOMAIN_AUTO_THROTTLE to 0… since you turned it off, the 0 setting would match the ‘off’ condition.

SInce people were getting the email more than once (!), there must be something odd in the installation (I would suspect it is NOT related to throttle settings.

phpList is designed so that it will only send an email once per campaign to an individual email address.

I’d start by looking up an email address that received multiple copies, and search for them in the database, looking to see how many times it is in there…

Thanks Dan for your comments.

However, I’m a bit confused when you said the following *“I’d put the DOMAIN_AUTO_THROTTLE to 0… since you turned it off, the 0 setting would match the ‘off’ condition”

To explain my confusion: I can see in the config.php that I set the parameter USE_DOMAIN_THROTTLE to 0.

However I set DOMAIN_AUTO_THROTTLE to 1, understanding that to mean that the batch processing will automatically space out emails sent to the same domain throughout the ‘BATCH_PERIOD’

AND . . . since USE_DOMAIN_THROTTLE is set to 0, its associated parameters: define(‘DOMAIN_BATCH_SIZE’, 1); & define(‘DOMAIN_BATCH_PERIOD’, 120); would have no effect, being overridden by the DOMAIN_AUTO_THROTTLE set to 1, hence making it active - Is that right?

Would appreciate if you could explain.

Many thanks for your help in advance

Phil

Hi Phil,
There are 2 kinds of throttling in phpList:

  1. Overall sending rate for all emails (BATCH_PERIOD, BATCH_SIZE, MAILQUEUE_THROTTLE, MAILQUEUE_AUTOTHROTTLE)
  2. Sending rate to a given domain, i.e. aol.com (USE_DOMAIN_THROTTLE, DOMAIN_BATCH_SIZE, DOMAIN_BATCH_PERIOD)

You can turn off any #1 type throttling by setting BATCH_SIZE, MAILQUEUE_THROTTLE, MAILQUEUE_AUTOTHROTTLE all to =0.

You can turn off any #2 type throttling by setting USE_DOMAIN_THROTTLE = 0


You can set your overall sending rate using using either BATCH_PERIOD and BATCH_SIZE (and spread the sending out over the BATCH_PERIOD using either MAILQUEUE_THROTTLE or MAILQUEUE_AUTOTHROTTLE).

Separately you can set your sending rate to a given domain (for instance, if you are getting '4.2.1 Try again later ’ from aol.com, and you want to limit the sending rate to aol.com) if you turn on the USE_DOMAIN_THROTTLE (set it to =1 to turn it on). Then the sending rate to a given domain is set by DOMAIN_BATCH_SIZE and DOMAIN_BATCH_PERIOD. In your example, aol.com would get 1 email every 2 minutes. Note that if you have 1000 aol.com emails in your list, it will take 2000 minutes to send to AOL.com.

My personal experience is that using domain throttling extended the campaign sending times significantly (this will vary with the content of each list).

There were some major upgrades to this feature in v 3.2.4 (which I have not testes personally), so make sure you are using the most recent version of phpList.