Thanks everyone for helping. Now that the problem is well understood, I will need to modify the hash code to adapt to my numeric usernames and probably install ReiserFS as it is faster than Ext3 according to my research.
When I installed Cyrus Imap I follow the installation instructions by the book. Does any one know if you have to set the partition directories to update synchronouslysome when using Ext3 or ReiserFS ? Where is the hashing code ? What function should I modify ? Thanks in advance, Andres Maduro ----- Original Message ----- From: "David Lang" <[EMAIL PROTECTED]> To: "Andres Maduro" <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]> Sent: Monday, February 25, 2002 1:10 AM Subject: Re: Too many users with Cyrus IMAP > what you have run into is a limit in the ext2/3 fs on the max number of > directory entries you can have. > > there are patches out there for cyrus to create a second tier of > directories rather then having all mailboxes in the user directory you > have user/a user/b user/c etc (or in your case /1 /2 /3 etc) to avoid not > only these problems, but also the problem that ext2/3 does sequential > seaches through the directory so with this many entries you will already > be very slow. > > also take a look at reiserfs and XFS as possible candidates for you to use > for your mailboxes, both of them have very different structures that are > designed to handle the large numbers of directories problem better. > > David Lang > > > On Sun, 24 Feb 2002, Andres Maduro wrote: > > > Date: Sun, 24 Feb 2002 23:16:06 -0800 > > From: Andres Maduro <[EMAIL PROTECTED]> > > To: [EMAIL PROTECTED] > > Subject: Too many users with Cyrus IMAP > > > > Hi, > > > > I have installed Cyrus 2.0.16 on Red Hat 7.2 with the standard SASL > > cyrus-sasl-1.5. I have been able to use it successfully and create perl web > > administration tools for managing mailboxes. > > > > I am currently doing a stress test, I need to be able to handle more than > > 100 thousand users on this server. I modified Cyrus Imap code so it can > > accept numeric accounts which I need as I am creating emails for a cellular > > company ([EMAIL PROTECTED]). I made a perl script to create 100000 > > accounts. I am using ext3 filesystem under linux. After the user number > > 31948 was created, no more accounts where created. Examining the imapd.log, > > I found that it was complaining about "too many links error", see below > > extract from imapd.log: > > > > Feb 24 22:45:54 mail imapd[22212]: abort_txn: aborting txn 2147683085 > > Feb 24 22:45:54 mail imapd[22212]: myfetch: starting txn 2147683086 > > Feb 24 22:45:54 mail imapd[22212]: myfetch: reusing txn 2147683086 > > Feb 24 22:45:54 mail imapd[22212]: mystore: reusing txn 2147683086 > > Feb 24 22:45:54 mail imapd[22212]: IOERROR: creating directory > > /var/spool/imap/user/01000032123: Too many links > > > > Any help is greatly appreciated. > > > > It would be nice if we could split /var/spool/imap/user on several > > partitions, is this possible ? What options do I have ? > > > > Following I will show several configurations files I am using: > > > > /etc/imapd.conf ----------------------------- > > configdirectory: /var/imap > > partition-default: /var/spool/imap > > admins: cyrus root apache andres > > sasl_pwcheck_method: sasldb > > #sasl_auto_transition: yes > > sendmail: /usr/sbin/sendmail > > ---------------------------------------------- > > > > /etc/cyrus.conf ------------------------------------- > > # standard standalone server implementation > > > > START { > > # do not delete these entries! > > mboxlist cmd="ctl_mboxlist -r" > > deliver cmd="ctl_deliver -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/imap/socket > > SERVICES { > > # add or remove based on preferences > > imap cmd="imapd" listen="imap" prefork=0 > > imaps cmd="imapd -s" listen="imaps" prefork=0 > > pop3 cmd="pop3d" listen="pop3" prefork=0 > > pop3s cmd="pop3d -s" listen="pop3s" prefork=0 > > sieve cmd="timsieved" listen="sieve" prefork=0 > > > > # at least one LMTP is required for delivery > > # lmtp cmd="lmtpd" listen="lmtp" prefork=0 > > lmtpunix cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=0 > > } > > > > EVENTS { > > # this is required > > checkpoint cmd="ctl_mboxlist -c" period=30 > > > > # this is only necessary if using duplicate delivery suppression > > delprune cmd="ctl_deliver -E 3" period=1440 > > } > > -------------------------------------------------------------------------- -- > > > > Best regards, > > Andres Maduro > >