[Dovecot] 2.0.beta3 imapd running hot
Bernhard Schmidt
berni at birkenwald.de
Sun Mar 21 03:20:42 EET 2010
Hi,
since a couple of weeks I occasionally have an imapd going crazy on me,
using up 100% CPU. Current revision is 10962
29865 vmail 20 0 47820 3296 1708 R 99.7 0.9 131:07.85 imap
vmail 29865 86.1 0.8 47820 3296 ? R Mar20 131:20
dovecot/imap [berni 2001:a60:f001:1:219:66ff:fe8b:a6e IDLE
strace -p <pid> shows a repeating pattern of
epoll_wait(8, {{EPOLLOUT, {u32=36560672, u64=36560672}}}, 5, 4872) = 1
gettimeofday({1269133967, 495298}, NULL) = 0
gettimeofday({1269133967, 495333}, NULL) = 0
gettimeofday({1269133967, 495370}, NULL) = 0
with the last argument of epoll_wait (4872) slowly decrementing and then
wrapping around to ~30k.
Attaching gdb shows the following backtrace:
(gdb) bt full
#0 array_idx_i (ioloop=0x22bd5f0) at array.h:189
No locals.
#1 io_loop_handler_run (ioloop=0x22bd5f0) at ioloop-epoll.c:188
ctx = 0x22bd800
event = <value optimized out>
list = <value optimized out>
io = <value optimized out>
tv = {tv_sec = 26, tv_usec = 307176}
t_id = 2
msecs = 26308
ret = 1
i = <value optimized out>
call = <value optimized out>
#2 0x00007f8f682bc8e8 in io_loop_run (ioloop=0x22bd5f0) at ioloop.c:350
No locals.
#3 0x00007f8f682acd63 in master_service_run (service=0x22bd4c0,
callback=0x6590) at master-service.c:486
No locals.
#4 0x0000000000418551 in main (argc=1, argv=0x22bd3a0) at main.c:313
set_roots = {0x41b840, 0x0}
service_flags = <value optimized out>
storage_service_flags = MAIL_STORAGE_SERVICE_FLAG_DISALLOW_ROOT
postlogin_socket_path = 0x0
(gdb) c
Continuing.
^C
Program received signal SIGINT, Interrupt.
0x00007fffed1ff9ad in gettimeofday ()
(gdb) bt full
#0 0x00007fffed1ff9ad in gettimeofday ()
No symbol table info available.
#1 0x00007f8f6795f02a in gettimeofday () from /lib/libc.so.6
No symbol table info available.
#2 0x00007f8f682bcb39 in io_loop_handle_timeouts_real
(ioloop=0x22bd5f0) at ioloop.c:291
item = <value optimized out>
tv = {tv_sec = 0, tv_usec = 36427248}
tv_call = {tv_sec = 0, tv_usec = 140737170938560}
t_id = <value optimized out>
#3 io_loop_handle_timeouts (ioloop=0x22bd5f0) at ioloop.c:339
_data_stack_cur_id = 0
#4 0x00007f8f682bd70e in io_loop_handler_run (ioloop=0x22bd5f0) at
ioloop-epoll.c:180
ctx = 0x22bd800
event = <value optimized out>
list = <value optimized out>
io = <value optimized out>
tv = {tv_sec = 28, tv_usec = 267997}
t_id = 2
msecs = 28268
ret = 1
i = <value optimized out>
call = <value optimized out>
#5 0x00007f8f682bc8e8 in io_loop_run (ioloop=0x22bd5f0) at ioloop.c:350
No locals.
#6 0x00007f8f682acd63 in master_service_run (service=0x22bd4c0,
callback=0) at master-service.c:486
No locals.
#7 0x0000000000418551 in main (argc=1, argv=0x22bd3a0) at main.c:313
set_roots = {0x41b840, 0x0}
service_flags = <value optimized out>
storage_service_flags = MAIL_STORAGE_SERVICE_FLAG_DISALLOW_ROOT
postlogin_socket_path = 0x0
doveconf -n:
mail.svr02.mucip.net:~# doveconf -n
# 2.0.beta3: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.33 x86_64 Debian squeeze/sid
auth_mechanisms = plain login
disable_plaintext_auth = no
listen = 83.170.6.69, 2001:1b10:1000::110:1:1
mail_gid = 5000
mail_location = maildir:%h/:INDEX=/var/cache/dovecot/%1n/%n
mail_uid = 5000
maildir_stat_dirs = yes
maildir_very_dirty_syncs = yes
passdb {
args = /etc/dovecot/dovecot-ldap.conf
driver = ldap
}
plugin {
quota = dict:user::file:%h/dovecot-quota
quota_rule = *:storage=500M
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
}
postmaster_address = postmaster at birkenwald.de
protocols = imap pop3 lmtp managesieve
quota_full_tempfail = yes
service auth {
unix_listener /var/spool/postfix-mailout/private/auth {
group = postfix
mode = 0660
user = postfix
}
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
unix_listener auth-userdb {
group = vmail
mode = 0660
}
}
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
}
service lmtp {
inet_listener {
port = 24
}
}
service managesieve-login {
inet_listener sieve_deprecated {
port = 2000
}
process_min_avail = 1
}
service pop3-login {
inet_listener pop3 {
port = 110
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
ssl_cert = </etc/ssl/private/pop3.mucip.net.crt
ssl_key = </etc/ssl/private/pop3.mucip.net.key
userdb {
args = /etc/dovecot/dovecot-ldap.conf
driver = ldap
}
verbose_proctitle = yes
protocol pop3 {
mail_plugins = quota
pop3_uidl_format = %08Xu%08Xv
}
protocol lmtp {
mail_plugins = sieve quota
}
protocol lda {
mail_plugins = sieve quota
}
protocol imap {
imap_idle_notify_interval = 600 s
mail_plugins = quota imap_quota zlib imap_zlib
}
At the moment I have two suspects, the imap_zlib plugin and CONDSTORE
(which I recently reenabled in Thunderbird after the fixed version got
deployed). The client is always Thunderbird 3.0.3+, but from different
systems. It does terminate without any error message in the logs when I
exit Thunderbird.
Now testing without zlib...
Bernhard
More information about the dovecot
mailing list