Bug 57073

Summary: Intermittent Connection Issues using default httpd.conf configuration
Product: Apache httpd-2 Reporter: Scott Pakula <pakulas>
Component: mpm_winntAssignee: Apache HTTPD Bugs Mailing List <bugs>
Status: NEW ---    
Severity: critical CC: m.amazirh
Priority: P2    
Version: 2.4.9   
Target Milestone: ---   
Hardware: PC   
OS: All   

Description Scott Pakula 2014-10-09 12:30:05 UTC
When running Apache 2.4.9 for Windows in a high latency environment (e.g. 100 - 200ms of latency) and using Internet Explorer 9/10/11, the web server will occasionally refuse to accept connections for a period of time, making it seem that the web server is down.

I have been running the same Apache 2.4.9 server in a low latency environment (e.g. <1ms latency) and am not able to replicate the behavior.

The current work around to this issue is to use the following configuration:

AcceptFilter http none

This has been reported by other sources online such as:

http://stijndewitt.wordpress.com/2014/01/10/apache-hangs-ie11/
http://stackoverflow.com/questions/9471202/website-sometimes-gets-jammedtimeout
Comment 1 Mohamed AMAZIRH 2014-10-25 11:50:06 UTC
Hi,
We had the same problem at work and we used the "AcceptFilter http none" workaround to solve it.

The problem can be reproduced easily by opening a connection to an Apache (for example by using telnet). As long as the connection is open without any data sent, the server hangs and everybody can't connect to it.

Steps I used to reproduce this outside work :
1) Create a Windows 2008 virtual machine (in my case 64bit Win2008 Standard on VirtualBox)

2) Download httpd binaries from here : https://www.apachelounge.com/download/win32/binaries/httpd-2.4.10-win32-ssl_0.9.8.zip

3) (Without changing the default configuration) Start httpd on the VM

4) From the vm or another machine connected to same network, connect to the httpd server with telnet (from windows : telnet httpd_address port_number), but dont send any data (dont type anything on the telnet terminal)

5) Type in the address of the server in a web browser. You'll see that the browser is trying to load the page but it remains stuck for a long time (as long as no data is sent from the open telnet connection)

6) wait for more than 20 seconds to be sure (you can also try loading the website from different tabs or windows)

7) Go back to the open telnet connection and type something (+ ENTER) to send data to the server (or kill the telnet process to close the connection)
8) Go back to the browser and you'll see that the page that was stuck loading, now is loaded (the moment you did step 7)

Now add "AcceptFilter http none" to httpd's configuration file then restart :  the server behaves normally.

I hope this information will help someone resolve this bug.