Author: Wayne Cuddy Date: To: exim-users Subject: [exim] 4.87 -> 4.88 readconf performance
I've been running 4.66 on an internal HP-UX host for quite a long
time. We've recently upgraded the hardware and the OS so I figure now
is also a good time to upgrade EXIM to the latest.
This is a relatively high volume host, 1000000+ msgs per day that relays
mail to DMZ MX relays for internet destined email.
Nominally the load on the host is about .3. When I upgraded to 4.88 the
load on the host went upwards of 7 and the process that feeds EXIM
started to queue up msgs in it's database and backup.
I tried version 4.87 and it's performance is on par with 4.66.
The feeding application forks EXIM directly and pipes the message to
EXIM via standard input. I tracked the 4.88 performance degradation to
calls to readconf_main in exim.c. It does appear to have undergone
extensive additions/changes from 4.87->4.88.
Instrumenting the code with rudimentary timing metrics I found that on
average in versions 4.66-4.87 readconf_main takes < 9000
microseconds.
On 4.88 it takes on average 63000 microseconds.
This is a substantial increase and intolerable for our current
configuration and workload.
Looking at the code I doubt this is HP-UX specific.
Has anyone else experienced this issue?
I've not had the time to test other configurations or operating systems.
If I changed from piping the message to EXIM to connecting to
localhost:25 and sending the message via SMTP would that remove calls to
readconf_main. I assume not since it appears EXIM re-invokes itself for
delivery using the "-Mc <exim_id>" parameters.