On Fri, 18 Feb 2005, Bernd Nies wrote:

Hi again,

These crashes are caused because cyrus runs out of file descriptors:


Feb 18 14:37:51 mailsrv lmtpunix[25178]: [ID 136705 local6.error] IOERROR: opening /var/spool/adnmail/cyrus/mail/dev/a2k-dev/cyrus.cache: Too many open files Feb 18 14:37:51 mailsrv lmtpunix[25178]: [ID 860734 local6.debug] verify_user(dev.a2k-dev) failed: System I/O error Feb 18 14:38:03 mailsrv imap[546]: [ID 299345 local6.debug] SQUAT failed to open index file Feb 18 14:38:03 mailsrv imap[546]: [ID 418793 local6.debug] SQUAT failed Feb 18 14:38:30 mailsrv master[19603]: [ID 970914 local6.error] process 6771 exited, signaled to death by 11 Feb 18 14:38:30 mailsv master[19603]: [ID 621917 local6.debug] service imaps pid 6771 in BUSY state: terminated abnormally Feb 18 14:38:43 mailsrv master[19603]: [ID 970914 local6.error] process 1326 exited, signaled to death by 11

A couple of days ago I increased the default file descriptor settings in
/etc/system from default

set rlim_fd_cur=1024
set rlim_fd_max=4096

to

set rlim_fd_cur=32768
set rlim_fd_max=65536

But recently Cyrus ran out again of file descriptors.

Tuning guides tell that it is dangerous to increase these default values:

http://docs.sun.com/source/817-6255/SystemTuning.html
http://www.princeton.edu/~psg/unix/solaris/troubleshoot/filedesc.html

We have about 100 concurrent imap users and some of them have more than
10000 mails in a folder. Postfix runs on the same host and delivers the
mails through a lmtp socket.

Could it possibly be that Cyrus may not close correctly every file after
accessing it and therefore runs out of file descriptors? Or what is the
recommended setting?

I have greatly increased the file handle limits on my linux Cyrus server with no adverse consequences. In my Cyrus init script I have:


# Crank up the file limits
ulimit -n 209702
ulimit -u 2048

This is probably overkill, but on a moderately loaded system you can expect Cyrus to use more than 1024 file handles easily:

[EMAIL PROTECTED] ~]# cat /proc/sys/fs/file-nr
21818   3984    209702


I would assume that programs on Linux would suffer from the same problems with stdio and select() calls as on Solaris, but I haven't had any trouble so far. My guess is that Sun placed that warning to cover legacy programs that can't handle larger limits.


        Andy
---
Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html

Reply via email to