[Dovecot] service_count=0 for imap and pop3
Mark Moseley
moseleymark at gmail.com
Tue Nov 16 00:58:34 EET 2010
> 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).
More information about the dovecot
mailing list