On 8/18/2015 11:37 AM, Alessio Cecchi wrote:
Il 18/08/2015 17:25, Tom Talpey ha scritto:
On 8/18/2015 10:46 AM, Alessio Cecchi wrote:
Hi,
in this tipical setup (Dovecot/Director thate share Maildir via NFS) on your NFS Server you have (about) 90% of read operations and only 10% of write operations.
If you see detailed stats for NFS operations you have 40-50% of GETATTR, this means that NFS/Dovecot clients are caching data (mainly dovecot index files) but they have to revalidate the cache frequently asking to the NFS Server if the file is changed (via GETATTR) but the file never change because only this client opens it.
So the NFS Server is wasting operations with (unnecessary) GETATTR request.
With NFSv4 and delegation you can practically eliminate these (GETATTR) requests and speed up your NFS server (instead of buy SSD disk).
This because with delegation a client open file and since is the only client to open these file (that is true with Director) the NFS server delegate the client to manage the file without check if was changed (via GETATTR) on the NFS share.
Enabling delegations on Maildir is going to scale very badly. The NFS client will end up requesting one on every message open, and because an NFS server can only support a limited number of active delegations, it will be forced to constantly recall them, only to issue new short-lived ones to the next message open.
Sure, but in my test there wasn't a scale problem, only few users was online but the "lock" error in dovecot.log come immediately.
Ok, but I don't see how this is a Dovecot problem. Centos is returning EIO to the lock request, you need to track down why that's happening.
NFS v4.0 delegations require a callback port to be open on the client, have you verified that it's set up properly?
While it's a decent idea for indexes, the client has no way to request delegations selectively for them. Perhaps if you used mdbox where the file count is lower, but even then, there will be many users and many mailboxes so it is important to be sure there are enough delegations available at the NFS server. That's a NetApp question in your case, and not a Dovecot one.
An idea could be to have a NFS share for index only and enable delegation on it.