Re: [exim] maildirsize file and massive concurrency

Top Page
Delete this message
Reply to this message
Author: Phil Pennock
Date:  
To: exim-users
Subject: Re: [exim] maildirsize file and massive concurrency
On 2011-02-19 at 21:05 +0100, Heiko Schlittermann wrote:
> Currently I'm investigating two directions:
>
>     - if I can prevent deliveries into a specific mailbox while
>       the size recalculation is running  [preferred]


You have multiple Linux boxes mounting a common storage via NFS? So,
each time one of them writes into the directory (a delivery), the
directory cache on the others is invalidated and needs to readdir()
again. NFS (v2/v3, haven't looked at v4) doesn't have a way to notify
client hosts of deltas in directory content, they need to readdir()
again.

One approach might be to bias which hosts receive mail for a given
mailbox; you said you had a two-stage system (good); so the front stage
uses ${nhash_4:$local_part@$domain} to get a number 0-3; you use this to
select which of the backing hosts is used, but set "fallback_hosts" to
the complete list of backing hosts, so that in the event of a machine
failure you still get delivery. Thus normally all mails for one address
go to just one host and you maintain NFS cache coherency.

-Phil