Lähettäjä: Michael Haardt Päiväys: Vastaanottaja: exim-users Aihe: [exim] Small modification for queue runners?
Hello,
I just had an idea how to improve queue run performance on larger queues:
How about having each queue runner not spawn a single delivery attempt
at a time, but a fixed number?
Right now, you can configure the amount of queue runners in total, but
quite often I see them stepping on each others toes. A single queue
runner that keeps a fixed number of deliveries running would not attempt
to deliver a message that is being tried by another queue runner, just
to find that the message is locked.
Right now, a queue runner forks a child and listens on a pipe to it.
The new queue runner had to have an array of pipes to listen to, starting
a new child when one ends, unless it reached the end of the queue.
Keeping 20 children running, the queue would be traversed just 1/20th
compared to 20 queue runners with one child each.