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@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