Re: [Exim] Understanding remote_max_parallel

Top Page
Delete this message
Reply to this message
Author: Philip Hazel
Date:  
To: Marc Perkel
CC: exim-users
Subject: Re: [Exim] Understanding remote_max_parallel
On Mon, 21 Jan 2002, Marc Perkel wrote:

> What I'm trying to understand is if I set:
>
> queue_run_max = 20
> remote_max_parallel = 10
>
> Then - at one minute intervals a new queue process starts forking 10
> delivery processes each eventually getting up to 200 processes after 20
> minutes. Do I understand that right?


No. From the manual (note second paragraph):

-q     If the -q option is not followed by a time value, it requests a single
       queue run operation. This option requires the caller to be an admin
       user. However, there is an option called "prod_requires_admin" which
       can be set false to relax this restriction (and also the same
       requirement for the -M, -R, and -S options).


===> Exim starts up a delivery process for each (inactive) message on the
===> queue in turn, and waits for it to finish before starting the next one.


A queue runner does NOT fork 10 delivery processes. It only ever forks
ONE delivery process. More from the manual:

remote_max_parallel             Type: integer                      Default: 1


    This option controls parallel delivery to remote sites. If the value is
    less than 2, parallel delivery is disabled, and Exim does all the remote
    deliveries for a message one by one, from a single delivery process.
    Otherwise, if a message has to be delivered to more than one remote host,
    or if several copies have to be sent to the same remote host, then up to
    "remote_max_parallel" deliveries are done simultaneously, each in a separ-
    ate process.


Perhaps it should say "if a SINGLE message", to make it clearer. There
is a section on p66 of the O'Reilly book entitled "Controlling the
number of delivery processes" which explains things more. Briefly:

queue_run_max = 20     => There are never more than 20 queue runners
                          running at once. Each will only ever fork one
                          delivery process (for one message) at once.


remote_max_parallel = 10  => Each delivery process will fork up to 10
                             subprocesses if there are that many remote
                             hosts that it has to deliver to.


If all your messages have only one remote recipient, remote_max_parallel
will have no effect.


--
Philip Hazel            University of Cambridge Computing Service,
ph10@???      Cambridge, England. Phone: +44 1223 334714.