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
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php