[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