service auth-worker {
client_limit = 1
idle_kill = 0
process_limit = 6000000
process_min_avail = 0
service_count = 1
vsz_limit = 18446744073709551615 B
}
What dovecot version is this? with 2.3.17 or later you should
probably use service_count=0 here.
That would prevent auth-worker process from dying after each
authentication and then need for new process to be spawned for each
authentication.
Yes, it is 2.3.17.
I give a try, it's slighty better. There is a little fewer stalled
auth processes.
But I didn't manage to go more than 2000 clients although in
production it's more than 8000 connections.
Maybe, it's because I didn't find how to make persistent connections
with imaptest and there was too many login/logout. I use delay to make
client during around 5 seconds
So I increase this delay up to 120s, this slow down login/logout and
decrease processes stuck in wait auth queue.
I think I will go this way to simulate normal load on this server.
But that doesn't simulate a reboot of service while clients are
connected.
Thank you all,
Ismaël
Hello,
I made some little progress in my benchmarks.
I have found how to use imaptest to get IDLE command and make persistent
connections, using profile.
I have ended yesterday to have 8000 persistents clients on the bench server.
My target is 60000 persistents clients for 250k mailboxes.
The server has 12 procs (24 cores) and 192 Go RAM, fs is zfs.
Increasing clients over 8000 make stalled all connections.
Login slows down drastically, but after login, IMAP commands stay fast.
I'm wondering how to go further.
I believe that I have to tune imap-login service.
I'm seeing 60 Go RAM used in my tests, I suppose that's login process
and authentication UNIX socket.
Monitoring alerts also about some minor page faults, it could be related.
Conf for now :
service auth-worker {
client_limit = 1 # because only the master auth process
connects to auth worker
process_limit = 18000 # should be a bit higher than auth_worker_max_count
setting
service_count = 0 # prevent auth-worker process from dying after
each authentication
process_min_avail = 96 # number of CPU cores * 4
}
service imap-login {
client_limit = 200
process_limit = 3000
process_min_avail = 96
service_count = 0
vsz_limit = 1G
}
// using High-performance mode
:https://doc.dovecot.org/admin_manual/login_processes/
I'll try today differents settings for this imap-login step, while
trying to increase number of clients.
If you have any hints to achieve that, I thank you
Ismaël Tanguy