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