*BSD News Article 47327


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!simtel!swidir.switch.ch!newsfeed.ACO.net!Austria.EU.net!EU.net!news.sprintlink.net!news.onramp.net!onramp.net!betts
From: betts@onramp.net (Jeff Betts)
Newsgroups: comp.unix.bsd.freebsd.misc
Subject: Zombies in FreeBSD2.0R & Apachie 0.6.5
Date: Mon, 24 Jul 1995 22:44:57 UNDEFINED
Organization: On-Ramp; Individual Internet Connections; Dallas/Ft Worth/Houston, TX USA
Lines: 59
Message-ID: <betts.74.1F9EE3B6@onramp.net>
NNTP-Posting-Host: stemmons08.onramp.net
X-Newsreader: Trumpet for Windows [Version 1.0 Rev B final beta #1]

Hi,

I'm running Apache 0.6.5 on FreeBSD 2.0R on a 16meg 486DX2-80 and an
ElCheapo 10BT NIC connected to an Ascend Pipeline 50 ISDN box.  The
Pipe-50 is automatically "up" (connected to the Net) when either
incoming or outgoing traffic requires it; otherwise, it is "down".

When triosystems.com (a friendly site) accesses my web site, netstat
shows the connection(s) as they come in, with the state changing from
ESTABLISHED to other states (I'm not positive what they were, byt they
had to do with WAIT, and TIME).  But slowly, most connections fall into
the LAST_ACK state (see netstat output below) and appear to have several
KB yet to send (See Send-Q).  

$ netstat -f inet
Active Internet connections
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp        0  15080  ns.www                 triosystems.com.1465   LAST_ACK
tcp        0  15896  ns.www                 triosystems.com.1464   LAST_ACK
tcp        0  15592  ns.www                 triosystems.com.1463   LAST_ACK
tcp        0  14264  ns.www                 triosystems.com.1462   LAST_ACK
tcp        0  16304  ns.www                 triosystems.com.1457   LAST_ACK
tcp        0  16728  ns.www                 triosystems.com.1439   LAST_ACK
tcp        0  13040  ns.www                 triosystems.com.1436   LAST_ACK
tcp        0  15080  ns.www                 triosystems.com.1424   LAST_ACK
tcp        0  16728  ns.www                 triosystems.com.1421   LAST_ACK
udp        0      0  localhost.domain       *.*
udp        0      0  www.travelscan.c.domai *.*
udp        0      0  ns.domain              *.*


This causes the Pipe-50 to stay "up" continuously.  Apparently, keep-
alive packets are responsible for this.  I can even force the Pipe-50
to terminate its connection to the Net, but as soon as it resets, it
automatically reconnects because it the host says it still has data
to send.

Doing a "ps aux" shows no orphaned processes, just the one httpd daemon
is running.  "Kill -HUP httpd_pid" does not change anything.  Killing
the daemon enitrely does no better.  The only way I can get rid of these
zombies is to reboot.

I'm no TCP/IP guru, but this definition in the FreeBSD source suggests we
are stuck waiting forever to get a final ack that will never come because
the client is gone:

#define TCPS_LAST_ACK           8       /* had fin and close; await FIN ACK */


If you have any ideas, suggestions, similar situations, or rolaids :-)
please let me know.  Feel free to reply here or use e-mail -- whatever
you please.

Thanks in advance,

Jeff
cpc@onramp.net