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





Reply via email to