Hi all,
we have a problem about anvil, it seems that when we have a high load the
dovecot stops to work. Sometimes it is sufficient to make a dovecot
reload, but sometimes we have to restart it.
These are the lines related to anvil in the dovecot.log:
[root at secchia ~]# grep anvil /var/log/dovecot.log | more
Oct 26 11:13:55 anvil: Error: net_accept() failed: Too many open files
Oct 26 11:14:32 imap-login: Error: net_connect_unix(anvil) failed:
Resource temporarily unavailable
Oct 26 11:14:32 imap-login: Fatal: Couldn't connect to anvil
Oct 26 11:14:33 pop3-login: Error: net_connect_unix(anvil) failed:
Resource temporarily unavailable
Oct 26 11:14:33 pop3-login: Fatal: Couldn't connect to anvil
[...] (many lines like these)
Oct 26 12:01:10 pop3-login: Fatal: Couldn't connect to anvil
Oct 26 12:01:18 auth: Error: read(anvil-auth-penalty) failed: Connection
reset by peer
Oct 26 12:01:18 auth: Error: read(anvil-auth-penalty) failed: Connection
reset by peer
Oct 26 12:01:18 auth: Error: net_connect_unix(anvil-auth-penalty) failed:
Connection refused
Oct 26 12:01:18 auth: Error: net_connect_unix(anvil-auth-penalty) failed:
Connection refused
Oct 26 12:01:18 auth: Error: read(anvil-auth-penalty) failed: Connection
reset by peer
Oct 26 12:01:18 auth: Error: net_connect_unix(anvil-auth-penalty) failed:
Connection refused
And this is the output of the doveconf -n:
[root at secchia ~]# doveconf -n
# 2.0.1: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.18-308.11.1.el5 x86_64 Red Hat Enterprise Linux Server
release 5.8 (Tikanga) xfs
auth_cache_size = 1024
auth_cache_ttl = 21600 s
auth_debug = yes
auth_debug_passwords = yes
auth_master_user_separator = *
auth_mechanisms = plain login
auth_socket_path = /var/run/dovecot/auth-userdb
auth_verbose = yes
base_dir = /var/run/dovecot/
disable_plaintext_auth = no
hostname = mail.unimore.it
info_log_path = /var/log/dovecot.log
lda_mailbox_autocreate = yes
log_path = /var/log/dovecot.log
mail_debug = yes
mail_location = maildir:/cl/mail/vhosts/sms.unimo.it/%Ln/Maildir
mail_plugins = $mail_plugins quota
mailbox_idle_check_interval = 60 s
mbox_write_locks = fcntl
namespace {
inbox = yes
location prefix = INBOX.
separator = .
type = private
}
passdb {
args = /usr/local/etc/dovecot.masterusers
driver = passwd-file
master = yes
}
passdb {
args = dovecot
driver = pam
}
plugin {
quota = maildir:User quota
quota_exceeded_message = Quota exceeded (mailbox is full)
quota_rule = *:storage=200MB
quota_rule2 = *:messages=100000
quota_rule3 = INBOX.Trash:storage=+100M
quota_warning = storage=90%% quota-warning 90 %u
quota_warning2 = storage=85%% quota-warning 85 %u
quota_warning3 = messages=95%% quota-warning 95 %u
quota_warning4 = messages=80%% quota-warning 80 %u
setting_name = quota
}
postmaster_address = postmaster at unimore.it
quota_full_tempfail = yes
service anvil {
client_limit = 199999
process_limit = 199999
}
service auth {
client_limit = 14500
unix_listener auth-userdb {
mode = 0600
user = vmail
}
}
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
}
process_limit = 5000
}
service imap {
process_limit = 5000
}
service pop3-login {
inet_listener pop3 {
port = 110
}
inet_listener pop3s {
port = 995
}
}
service pop3 {
process_limit = 1024
}
service quota-warning {
executable = script /usr/local/bin/quota-warning.sh
unix_listener quota-warning {
group = vmail
user = vmail
}
user = dovecot
}
ssl_ca = </etc/pki/tls/certs/ca_unimore_tcs.pem
ssl_cert = </etc/pki/tls/certs/cert-852-mail.unimore.it-cluster.pem
ssl_key = </etc/pki/tls/certs/mailcluster.key
userdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
verbose_ssl = yes
protocol lda {
mail_plugins = $mail_plugins quota
}
protocol imap {
mail_plugins = $mail_plugins imap_quota
}
protocol pop3 {
mail_plugins = $mail_plugins quota
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
pop3_uidl_format = %08Xu%08Xv
}
[root at secchia ~]#
And these are the limit settings in the OS:
* soft nofile 131072
* hard nofile 131072
Have someone had the same problem?
thanks in advance
Fabio Ferrari
On 26.10.2012, at 13.24, FABIO FERRARI wrote:> Hi all, > > we have a problem about anvil, it seems that when we have a high load the > dovecot stops to work. Sometimes it is sufficient to make a dovecot > reload, but sometimes we have to restart it. > > Oct 26 11:13:55 anvil: Error: net_accept() failed: Too many open filesThis is the problem.> And these are the limit settings in the OS: > * soft nofile 131072 > * hard nofile 131072 > > Have someone had the same problem?The OS limits are ok. But you need to make sure that the dovecot processes have enough fds in ulimit. You can check the limits with: cat /proc/<pid of anvil process>/limits The "Max open files" soft limit is what you're most likely hitting. Use "ulimit -n 10000" or something before running dovecot binary. And make sure that it changes the limit in the proc. Many init scripts change the ulimit internally.