On Aug 11, 2005, at 7:48 PM, steve roussey wrote:
> o Apache 2+ uses SO_LINGER by default if it defined for that system.
Really? We just did a around of discussion/debugging on this at work
and I found that it uses ap_lingering_close which is like the
lingering_close function in 1.3.
> Apache 1 will only use it if you define USE_SO_LINGER (I suppose in
> configure).
Right and the default is to use lingering_close, unless NO_LINGCLOSE is
defined on some os-es like SUNOS4, IRIX, NEXT, AUX3, UW.
> Apache2 has all sorts of stuff in the comments of the code
> and in the manual which is just wrong. Its all from Apache1 and does
> not reflect on Apache2's implementation. I wish they just erased it
> instead.
I just wish people would fix the TCP stack, it is broken damn it.
> o As far as I can tell, current Linux will block until all data is
> sent, then return (doing the actual closing part in the background)
> with SO_LINGER.
This is what we found for Linux and FreeBSD, kernel guys say it is not
a bug in the TCP stack sense everybody blocks.
> o Lingerd caused my apache setup to crash. It was worth a try if it
> didn't take much effort, but not worth fixing.
Are people really finding that they need lingerd?
For 1.3 we have keepalive off and build with NO_LINGCLOSE, which means
be blast the data to the kernel buffer (set large) close the socket and
move on. We have been doing this for at least 3+ years and I have
never heard any complaints and we server a lot of requests/client (I am
tied with Rasmus).
Brian