Hi List,
after upgrading dovecot from version 2.2.33.2 to 2.3.7.2 I got a lot of error
messages like the following if the process count of imap processes reaches
nearly 1000 (~950 (there are a few pop-connections)).
Sep 5 11:27:32 mailbox1 dovecot: imap-login: Internal login failure (pid=27728
id=116): user=<xxxx at xxxx.xx>, method=PLAIN, rip=x.x.x.x, lip=x.x.x.x,
session=<qETa7cqRzpZV3IEw> Sep 5 11:27:33 mailbox1 dovecot: imap-login:
Error: master(imap): net_connect_unix(imap) failed: Resource temporarily
unavailable - http://wiki2.dovecot.org/SocketUnavailable (client-pid=27704,
client-id=79, rip=x.x.x.x, created 511 msecs ago, received 0/4 bytes)
Our setup consists of some servers with dovecot as proxy/redirector as frontend
servers, redirecting the logged in users to the backend servers storing the
mailboxes.
OS is CentOS 6 on both server types. The backend server in question has usually
~ 2500 simultaneous imap connections.
Before the update there where no problems.
During the update I merged the old 2.2 config into the new 2.3 from the fresh
installed binary (Repo from dovecot.org).
As I found the failure above in the logfile I testet a lot, to figure out how to
fix this, because for me it seemed to be some limit around 1000
connections/processes anywhere in the config. In the end I changed the default
value of "default_client_limit" from ist default 1000 to 8192 and the
problem was fixed for the moment.
Now I'm trying to understand why this fixes the problem and what the
difference is between 2.2 and 2.3. For me it seems like something changed in the
architecture during the release change, but I didn't find anything. I looked
into the release notes and also checked the differences beween the
2.2 and 2.3 default config values (using doveconf -d).
Can anyone help?
Here is the output of doveconf -n
# 2.3.7.2 (3c910f64b): /etc/dovecot/dovecot.conf # Pigeonhole version 0.5.7.2
(7372921a) # OS: Linux 2.6.32-696.23.1.el6.x86_64 x86_64 CentOS release 6.10
(Final) auth_mechanisms = plain login default_client_limit = 8192
disable_plaintext_auth = no mail_location = mdbox:%h mail_plugins = quota zlib
managesieve_notify_capability = mailto managesieve_sieve_capability = fileinto
reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric
relational regex imap4flags copy include variables body enotify environment
mailbox date index ihave duplicate mime foreverypart extracttext namespace inbox
{
inbox = yes
location mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix }
passdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
plugin {
quota = dict:User quota::file:%h/dovecot-quota
quota_warning = storage=90%% quota-warning 90 %u
sieve = file:~/sieve;active=~/.dovecot.sieve
zlib_save = gz
zlib_save_level = 6
}
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh protocols = imap pop3 lmtp
sieve service imap-login {
process_min_avail = 12
service_count = 0
}
service imap {
process_limit = 8192
}
service lmtp {
inet_listener lmtp {
address = *
port = 24
}
}
service pop3-login {
process_min_avail = 12
service_count = 0
}
service pop3 {
process_limit = 1024
}
service quota-warning {
executable = script /scripts/quota.sh
unix_listener quota-warning {
user = vmail
}
user = vmail
}
ssl = no
userdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
verbose_proctitle = yes
protocol lmtp {
mail_plugins = quota zlib sieve
}
protocol imap {
mail_max_userip_connections = 30
mail_plugins = quota zlib imap_quota
}
protocol pop3 {
mail_plugins = quota zlib
}
greetings,
Oliver