Number of imap process increasing over time

Shaheen Bakhtiar shashaness at hotmail.com
Fri Aug 14 11:11:45 EDT 2015


> On Aug 14, 2015, at 8:03 AM, Dan White <dwhite at olp.net> wrote:
> 
> On 08/14/15 07:46 -0700, Shaheen Bakhtiar wrote:
>> Rebuilt our IMAP server from scratch using Cyrus 2.4.17 on FC22 x86_64.
>> The server is a single process 2.3GH 8 core AMD 64bit with 4G of memory.
>> 
>> Ever since the rebuild we are experience an ever growing number of imapd
>> processes, when we first boot the server we have ~200 using 2.4G of
>> memory. In about 3 to 4 days we have ~1500 imapd processes taking up all
>> available physical memory and all all available swap memory (an additional
>> 4G).
>> 
>> and our logs are filled with messages like:
>> Aug 14 06:26:01 postoffice kernel: Out of memory: Kill process 15427 (imapd) score 1 or sacrifice child
>> Aug 14 06:26:01 postoffice kernel: Killed process 15427 (imapd) total-vm:179648kB, anon-rss:7756kB, file-rss:672kB
> 
> How many processes spawn is configurable within /etc/cyrus.conf. How do you
> have your imap entries configured?
> 
> -- 
> Dan White

[shawn at postoffice ~]$ more /etc/cyrus.conf 
# standard standalone server implementation

START {
  # do not delete this entry!
  recover	cmd="ctl_cyrusdb -r"

  # this is only necessary if using idled for IMAP IDLE
  idled		cmd="idled"
}

# UNIX sockets start with a slash and are put into /var/lib/imap/sockets
SERVICES {
  # add or remove based on preferences
  imap		cmd="imapd" listen="imap" prefork=5
  imaps		cmd="imapd -s" listen="imaps" prefork=1
  pop3		cmd="pop3d" listen="pop3" prefork=3
  pop3s		cmd="pop3d -s" listen="pop3s" prefork=1
  sieve		cmd="timsieved" listen="sieve" prefork=0

  # these are only necessary if receiving/exporting usenet via NNTP
#  nntp		cmd="nntpd" listen="nntp" prefork=3
#  nntps		cmd="nntpd -s" listen="nntps" prefork=1

  # at least one LMTP is required for delivery
#  lmtp		cmd="lmtpd" listen="lmtp" prefork=0
  lmtpunix	cmd="lmtpd" listen="/var/lib/imap/socket/lmtp" prefork=1

  # this is only necessary if using notifications
#  notify	cmd="notifyd" listen="/var/lib/imap/socket/notify" proto="udp" prefork=1
}

EVENTS {
  # this is required
  checkpoint	cmd="ctl_cyrusdb -c" period=30

  # this is only necessary if using duplicate delivery suppression,
  # Sieve or NNTP
  delprune	cmd="cyr_expire -E 3" at=0400

  # this is only necessary if caching TLS sessions
  tlsprune	cmd="tls_prune" at=0400
}



More information about the Info-cyrus mailing list