Hi all,
I am running exim 4.30.
I have a director reading email addresses out of a PostgreSQL database.
Some messages have around 10,000 recipients.
At any given time, 5 or 6 messages with an average of 5,000 recipients
will be queued. All are SMTP based deliveries.
I have configured exim with:
queue_run_max = 50
remote_max_parallel = 150
To be able to best parallelise the delivery process. However, in the
majority of cases 1 or 2 ,essages do not spawn multiple delivery
processes, meaning that delivery is serialised and therefore slow. (My
configuration has nothing else out of the ordinary, except a few
transports to read addresses out of postgres).
I can see that delivery is slow by checking msglogs and seeing that
'transport succeeded' is logged only once every 1 - 10 seconds, say,
according to the timestamp. Locating the process and killing it generally
has the 'desired' effect -- namely, the next queue running picks up the
process, does its thing, and then spawns lots of delivery processes.
I thought I might be hitting kernel limits (on Linux 2.4). The (root)
process starting exim has the following ulimit:
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 8192
pipe size (512 bytes, -p) 8
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 7168
virtual memory (kbytes, -v) unlimited
Of course, I may be wrong in assuming that exim inherits these across the
root->exim change.
Does anyone know how I can rectify this problem?
Thanks,
Gavin