(この質問への回答はわかっています。回答をコミュニティと共有するためだけに投稿します)
Apache 2.4のローカル(Windows 7)インスタンスでdelaysまたは一部のURLを処理するときにハングアップします(これらのURLへのアクセスに使用するブラウザーに応じて。
Firefox/Chromeでは、Apacheは特定のURLでは応答が遅いです。任意のURLで約20%の確率で速度が低下します。発生した場合、Firefoxが「待機中...」ステータスを表示するまで5秒の遅延があります。
Internet Explorer 9では、Apacheは単にハングしますであり、再起動するまで(任意のブラウザーで)要求の処理を停止します。
httpd.conf
に多くの変更(KeepAlive、EnableMMAP、HostnameLookupsを無効にするなど)を試みましたが、何も機能しないようです。
Thomaszによって回答
解決策は以下をhttpd.conf
に追加することです:
AcceptFilter http none
AcceptFilter https none
Windowsでは、これはAcceptEx()API(WinSockの一部)を無効にする効果があり、パフォーマンスは向上しますが、Comodo Firewallと競合する可能性があります。
Comodoファイアウォールを「無効」モードにしても、要求はおそらくComodoのネットワークコードを通過するため、役に立ちません。問題を解消するには、Comodoを完全にアンインストールする必要があると思います(私は試していません)。
Apache 2.2で同様の問題がある場合は、代わりにWin32DisableAcceptExディレクティブを使用する必要があります。
http://httpd.Apache.org/docs/2.4/mod/core.html からの引用:
Windowsのデフォルト値は次のとおりです。
AcceptFilter http data
AcceptFilter https data
ウィンドウのmpm_winntはAcceptFilterを解釈してAcceptEx()APIを切り替え、httpプロトコルのバッファリングをサポートしません。 Windows AcceptEx()APIを利用する2つの値があり、接続間でネットワークソケットをリサイクルします。データは、上記のようにデータが送信されるまで待機し、初期データバッファーとネットワークエンドポイントアドレスはすべて、単一のAcceptEx()呼び出しから取得されます。 connectはAcceptEx()APIを使用し、ネットワークエンドポイントアドレスも取得しますが、他とは異なり、接続オプションは最初のデータ送信を待機しません。
Windowsでは、どれもAcceptEx()ではなくaccept()を使用せず、接続間でソケットをリサイクルしません。これは、ドライバーがサポートされていないネットワークアダプターや、VPNドライバーなどの仮想ネットワークプロバイダー、スパム、ウイルス、スパイウェアのフィルターに役立ちます。
私はWindows 7 ProボックスでApache 2.4.16を実行していますが、私のWebサイトは約2週間前に機能しなくなりました。これを追加することで問題が修正されました。
ServerRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.4"
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen XX.XX.XX.XX:80
Listen 80
AcceptFilter http none
AcceptFilter https none