Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 May 2008 12:30:40 -0700 (PDT)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Robert Blayzor <rblayzor.bulk@inoc.net>
Cc:        freebsd-stable@freebsd.org
Subject:   Re: Sockets stuck in FIN_WAIT_1
Message-ID:  <200805291930.m4TJUeGX025815@apollo.backplane.com>
References:  <B42F9BDF-1E00-45FF-BD88-5A07B5B553DC@inoc.net>	<1A19ABA2-61CD-4D92-A08D-5D9650D69768@mac.com>	<23C02C8B-281A-4ABD-8144-3E25E36EDAB4@inoc.net>	<483DE2E0.90003@FreeBSD.org>	<B775700E-7494-42C1-A9B2-A600CE176ACB@inoc.net>	<483E36CE.3060400@FreeBSD.org>	<483E3C26.3060103@paradise.net.nz>	<483E4657.9060906@FreeBSD.org> <483EA513.4070409@earthlink.net> <96AFE8D3-7EAC-4A4A-8EFF-35A5DCEC6426@inoc.net> <483EAED1.2050404@FreeBSD.org> <200805291912.m4TJCG56025525@apollo.backplane.com> <14DA211A-A9C5-483A-8CB9-886E5B19A840@inoc.net>

next in thread | previous in thread | raw e-mail | index | archive | help

:On May 29, 2008, at 3:12 PM, Matthew Dillon wrote:
:>    I guess nobody mentioned the obvious thing to check:  Make sure
:>    TCP keepalive is turned on.
:>
:>    sysctl net.inet.tcp.always_keepalive=1
:
:
:Thanks Matt.
:
:I also thought that a keepalives were not running and sessions just  
:stuck around forever, however I do have:
:
:
:net.inet.tcp.keepidle=900000
:net.inet.tcp.keepintvl=30000
:net.inet.tcp.msl=5000
:net.inet.tcp.always_keepalive=1  (default)
:
:
:I believe keep idle was defaulted to 2hrs, I changed it to 15 minutes  
:with a 30 second tick... I still found FIN_WAIT_1 sessions stuck for  
:several hours, if not infinite.
:
:Nonet he less, I have a new server up running 7.0-p1, I'll be pumping  
:a lot of traffic to that box soon and I'll see how that makes out.
:
:-- 
:Robert Blayzor, BOFH
:INOC, LLC
:rblayzor@inoc.net
:http://www.inoc.net/~rblayzor/

    If it is still giving you trouble I recommend using tcpdump to observe
    the IP/port pair of one of the stuck connections over the keepalive
    period and see if the keepalives are still being sent and, if they are,
    what kind of response you get from the other end.

    It is quite possible that the other ends of the connection are still
    live and that the issue could very well be a timeout setting in the
    server config file instead of something in the TCP stack.

    This is what you should see when a keepalive occurs over an idle
    connection:

    * A TCP packet w/ 0 data sent to the remote
    * A response from the remote:  Either a pure ACK, or a TCP RESET

    If no response occurs from the remote the keepalive code will then
    retry a couple of times over keepintvl (every 30 seconds in your case),
    and if it still gets no response after I think 3 retries (30+30+30 = 90
    seconds later) it should terminate the connection state.

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200805291930.m4TJUeGX025815>