Setting TCP keepalive for Cyrus daemons
Paul M Fleming
pfleming at siumed.edu
Fri Feb 12 16:59:31 EST 2010
Shouldn't these client connections already be handled by the poptimeout &
timeout options? unless you have it set to zero...
We have had problems within the murder (old code had several spots where
murder front <-> back communications could deadlock)..
On Sat, 13 Feb 2010, Bron Gondwana wrote:
> On Fri, Feb 12, 2010 at 09:45:02AM -0600, Gary Mills wrote:
> > I've been noticing idle pop3d processes on our Cyrus front end server
> > for some time. These should be transient. One that was several days
> > old had an established TCP connection to a wireless client that had
> > disappeared. Presumably the client never closed the connection.
> >
> > Setting TCP keepalive on the file descriptor should permit the kernel
> > to close the connection in this situation. Does this sound
> > reasonable? Perhaps it's already been addressed in a later Cyrus
> > version. We're running cyrus-imapd-2.3.8.
> >
> > I'm willing to add a `keepalive' option to Cyrus master along with the
> > setsockopt() system call to enable that setting. This option could be
> > added to the cyrus.conf file for any services that could benefit from
> > it. Would this be a reasonable addition to Cyrus?
>
> This is something I've been wanting to look in to as well. If a machine
> crashes, it can leave sync_clients hanging for ever, thinking they are
> still talking to the replica - meaning that they hold the lock and
> replication doesn't start back up. Quite annoying.
>
> Is there any reason to make it an option rather than just always having
> it on? Or at least not to make it the default. If it's a good idea, it
> SHOULD be the default. I'm strongly against having hundreds of lines of
> config file required to get the sanest defaults!
>
> Hmm... oh:
>
> http://tools.ietf.org/html/rfc1122#page-101
>
> Implementors MAY include "keep-alives" in their TCP
> implementations, although this practice is not universally
> accepted. If keep-alives are included, the application MUST
> be able to turn them on or off for each TCP connection, and
> they MUST default to off.
>
> Keep-alive packets MUST only be sent when no data or
> acknowledgement packets have been received for the
> connection within an interval. This interval MUST be
> configurable and MUST default to no less than two hours.
>
> Sounds like it does need to be configurable! Also, the defaults are
> crazy high amounts for a local reliable network. I think I'd prefer
> about 5 minutes than 2 hours!
>
> Bron.
> ----
> 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
>
More information about the Info-cyrus
mailing list