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
> >

Reply via email to