Re: BUG? File descriptor use in cmd_append (for MULTIAPPEND) results in many open files

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Dec 11, 2006, at 1:02 PM, Rich Graves wrote:

Nik Conwell wrote:
multiple messages being appended). Cyrus-imapd handles this multiappend by creating stage files for each appended message and leaving the file descriptor open. The problem is that after 240 messages, we run out of file descriptors and so an open() of the next stage file fails with EMFILE. I updated /etc/cyrus.conf to make the max fds be 1024 (AFAICT kernel MAX) which helped somewhat but not for larger mailboxes with > 1008 messages.

Excellent troubleshooting. I'm getting worried that I have a problem and don't know it. Did you get useful error messages (that we can search for, too)?

The server logs:
IOERROR: creating message file /var/spool/imap/stage./ 828-1165849099-1008: File exists

The file is named pid-timestamp-stage_sequence_number

The "File exists" error is bogus.  With strace you see the real error:

open("/var/spool/imap/stage./828-1165849099-1008", O_RDWR|O_CREAT| O_TRUNC, 0666) = -1 EMFILE (Too many open files)

and then the code goes on try a mkdir so it loses the errno:

mkdir("/var/spool/imap/stage./", 0755)  = -1 EEXIST (File exists)

following through the rest of the trace you see everything being unwound:

close(1023)                             = 0
munmap(0xb652b000, 4096)                = 0
unlink("/var/spool/imap/stage./828-1165849099-1007") = 0
close(1022)                             = 0
munmap(0xb652c000, 4096)                = 0
unlink("/var/spool/imap/stage./828-1165849099-1006") = 0
close(1021)                             = 0

[...]



The man page for cyrus.conf suggests that the default is 256, but that the integer value is optional. So if maxfds does not appear in cyrus.conf at all, is the default 256, or is it unlimited (up to ulimit)? Looks like the former to me. Ick.

Looks like the former to me as well since it was crapping out at 240 stage files (a bunch of files already open when it started).

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

[Index of Archives]     [Cyrus SASL]     [Squirrel Mail]     [Asterisk PBX]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [KDE]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux