Yeah, that much I more or less get.
What I really don't understand is what can a client do (IE11) that would
regularly cause httpd.exe to hang with AcceptEx. This is reproducible
on every single machine I've ever tried, including completely vanilla
virtual machines, or pretty straightforward physical machines with intel
NICs and no additional stack drivers. That seems like a pretty hideous
architecture if a regular non-malicious client requests could end up
causing the web server to simply stop responding.
The InstallAnywhere problem I mentioned is also reliably reproduced on
every single Windows system I've tried this on (about a dozen different
systems with different configurations - virtual and physical). This is
the one I especially can't understand. How would launching httpd.exe
from a installer process (java.exe specifically) prevent it from
responding to requests.
Andy
On 06/10/2015 10:48 AM, William A Rowe Jr wrote:
It turns off all advanced socket mechanics for accepting connections.
That means
it won't pre-fetch data. Because of how cobbled-together the WinSock
network
stack drivers (third parties, included) were, there are many things that
break
sendfile (disable sendfile) or socket reuse (disable advanced accept logic).
In other words, if you need reliability on some pretty crazy
installations of
Windows with lots of out-of-date drivers, your solution is the way to
go. They
are for performance, there is no reason to turn these on in low-traffic
cases.
On Wed, Jun 10, 2015 at 10:31 AM, Andy Wang <aw...@ptc.com
<mailto:aw...@ptc.com>> wrote:
I originally asked this on user@httpd and didn't get a response, so
thought I'd redirect to dev and see if anyone can explain why this
would occur if you have time. I have to admit, it's a curiosity to
me, that I just don't want to let go until I understand it and what
research I've done into AcceptEx doesn't seem to be giving me any
more insight.
--- original message ---
We've come across numerous cases where apache httpd 2.4 (I'm using
2.4.12 but I don't believe this is version specific) hang using the
default configuration options.
There are two cases
1) we have an InstallAnywhere installer that launches httpd during
install time to do some initial work. When the installanywhere
installer starts httpd.exe (it does it via cmd.exe) httpd does not
respond to requests. If you kill the installanywhere installer, then
all of the sudden httpd starts responding
2) certain IE 11 client requests hang httpd 2.4.
I've wireshark'ed #2 and at some point, an http GET gets an ACK and
nothing more. I've peeked a little bit at the process threads with
processexplorer (unfortunately i'm not a windows developer, so I'm not
entirely familiar with the low level windows stuff) and everyhting looks
like it's okay and simply waiting for requests.
What I found after googling and testing is AcceptFilter http|https none
prevents both of those problems. I've not yet tried connect to see if
that works either.
But what I'm really wondering about is, can anyone explain, especially
in #2, what it is about AcceptFilter http none that actually resolves
these types of issues?
Thanks,
Andy