The database deadlocking gremlins usually cause an lmtpd or imapd
process to crash while holding a database lock.  The number one thing
is to find out which process crashed, why it crashed, and to stop it.

The master should syslog whenever a process exiting abnormally 
("grep signal /var/log/cyrus.log").

We're using Berkeley db 3.1.17 on Solaris 2.7 and haven't had any
problems since upgrading to Cyrus 2.1, though we use a flat text
mailboxes file.  (But there's still the deliverdb/tls database).

Michael, when you say you're going to compile a all cyrusdb_flat,
which version are you talking about?  Making deliverdb use a flat text
file would really hurt performance.

To get things straight, by default:

Cyrus 2.0.16 uses Berkeley db w/ txns for mailboxes.
      It uses Berkeley db w/o txns for deliverdb (and has for a long time).
      It uses flat text files for storing seen state.

Cyrus 2.1 uses Berkeley db w/ txns for mailboxes.
      It uses Berkeley db w/ txns for deliverdb.
      It uses flat text files for storing seen state.
      It uses Berkeley db w/ txns for storing TLS session information.

We run Cyrus 2.1 with:
   flat mailboxes
   db3_nosync deliverdb
   flat seen state
   db3_nosync TLS

I'm working on another reliable non-Sleepycat format for the mailboxes
file since it's become apparent that no large volume site can use
Sleepycat.  I don't see any reasonable alternatives for deliverdb or
TLS information right now.

Larry

   Date: Tue, 15 Jan 2002 16:32:01 -0500
   From: Michael Bacon <[EMAIL PROTECTED]>

   You've apparently made the aquaintance of the database deadlocking 
   gremlins.  We've been running into this one since upgrading to 2.0.16, and 
   have yet to find a good solution for it.  Because we've finally gotten sick 
   of them, we're about to install a version of cyrus that was recompiled 
   using all cyrusdb_flat instead of cyrusdb_db3 to see if it helps.  In the 
   meantime, you can probably cut down on the frequency of the errors by 
   setting prefork=0.  I don't know why, but the preforks seem to make the 
   problem happen more frequently.

   Michael Bacon
   Duke University
   [EMAIL PROTECTED]

   --On Tuesday, January 15, 2002 15:52:59 -0500 Chris Peck <[EMAIL PROTECTED]> 
   wrote:

   > Yesterday I started to see (for the first time since upgrading to
   > cyrus-2.0.16 on Jan 4th) a lot of messages from sendmail which indicated:
   > "Could not connect to socket /var/imap/socket/lmtp: Connection refused by
   > localhost".  I checked and there were no lmtpd processes running, even
   > though my cyrus.conf indicated a prefork=1 for them.  This, of course,
   > really messes up our mail delivery, since mail is coming in, but, it's
   > not getting delivered.  I stopped sendmail & cyrus master, then started
   > cyrus master & sendmail & it started up fine.  About 4 hours later, the
   > same thing happened. Once again I went through the restart process.  I
   > then rebooted our system around 6:00 pm last night (students return
   > today), and all was fine until around 1:30 this afternoon, when I started
   > getting the same messages in syslog, but, there were about 30 lmtpd's
   > running (over 100 sendmail's). This time I waited & after a few minutes
   > lmtp would accept the connects, then reject them, etc.  Finally, I went
   > through the restart process & it has been running fine since.
   >
   > Needless to say, I am very concerned about this.  It sounds like I'm
   > running into a resource problem, but, I have checked swap, disk space,
   > memory usage, etc, and all seems fine.  Is it possible that I need to
   > increase a network resource?  Or maybe, tell master to increase his
   > listen queue on startup?
   >
   > Here's the cyrus.conf file:
   >#
   ># cyrus.conf
   >#
   ># taken from prefork.conf as distributed with cyrus
   ># 20011010 - initial create date <crpeck>
   >#
   >
   > 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/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=5
   >    pop3s         cmd="pop3d -s" listen="pop3s" prefork=1
   >    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=1
   > }
   >
   > 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
   > }
   >
   > Any suggesations on where to start would be appreciated...
   >
   > -thanks
   >   chris
   >
   >
   > Chris Peck
   > Manager of Unix Services
   > Information Technology
   > The College of William and Mary
   > Williamsburg, VA 23187
   >
   >



Reply via email to