> Timo, > Any hints on how many POP3 and IMAP connections I'd be able to get > away with in a single threads with the above setup, assuming they're > relative busy? I.e. if my boxes typically have, say, 200 concurrent > POP3 connections and 600 IMAP connections, if I used > process_min_avail=50 for POP3 and process_min_avail=100 for IMAP, I'd > assume that'd be in the area of 4 POP3 concurrent connections handled > by that one POP3 thread and 6 concurrent connections handled by that > one IMAP thead. > > I was thinking something like 3-4 per thread (calculating vs max > connections) for POP3 and maybe 5-7 for IMAP (as I'm assuming that at > least a few will just be in IDLE at any given point). > > I guess it comes down to, are you aware of any internal limits for a > POP3 or IMAP thread where they're going to start to bog down and > possibly death spiral? I'm going to experiment with different > settings, but I'd love to hear any opinions you have on it. Sorry for > the vagueness. > > BTW, I realize process_min_avail is just a minimum, but without having > service_count=1, what would cause dovecot to fork off more processes > than #process_min_avail?
Actually, it looks like the "spreading" of connections was in my imagination only :) It looks like it can get quite 'clumpy'. Here's a copy/paste from a small segment of ps: emailuser 2625 0.0 0.1 4748 3132 ? S 17:15 0:00 \_ dovecot/imap [2 connections] emailuser 2626 0.0 0.2 7484 6124 ? S 17:15 0:00 \_ dovecot/imap [16 connections] emailuser 2627 0.0 0.1 4572 2960 ? S 17:15 0:00 \_ dovecot/imap [5 connections] emailuser 2628 0.0 0.5 12968 10332 ? S 17:15 0:01 \_ dovecot/imap [30 connections] emailuser 2630 0.2 1.0 23316 20836 ? S 17:15 0:04 \_ dovecot/imap [90 connections] emailuser 2632 0.7 2.6 59440 54492 ? S 17:15 0:14 \_ dovecot/imap [209 connections] emailuser 4099 0.7 0.3 8636 7252 ? S 17:34 0:06 \_ dovecot/pop3 [2 connections] emailuser 4418 0.8 0.3 9576 8196 ? S 17:38 0:05 \_ dovecot/pop3 [6 connections] emailuser 4478 0.5 0.7 18664 14868 ? S 17:39 0:03 \_ dovecot/imap [62 connections] emailuser 4622 1.1 0.4 10404 8780 ? S 17:40 0:05 \_ dovecot/pop3 [8 connections] emailuser 4733 1.1 0.3 8576 6972 ? S 17:42 0:04 \_ dovecot/pop3 [5 connections] The interesting thing is that there's quite a number of other imap/pop3 procs with just one connection and a ton of imap procs that haven't been touched (i.e. are still running as 'root', waiting to eventually setuid to 'emailuser'). Is there a way to spread those out more or is there probably no need to? I imagine in the case of PID 2632, a large number of those connections are just sitting in IDLE and doing nothing beyond stat64()'s. Or maybe a better question would be, is there a setting I'm not finding that puts an upper limit on connections for a single process, so a single process will stop servicing new connections after it hits a certain # and lets the other less-loaded processes handle the new connection. All the various *_limit settings appear to be across all processes, not per-processs like this. This btw is 2.0.7 (but with the proctitle patch).