Windows上のApache 2.4の応答が遅く、一部の動的ページを提供するとハングする


30

(この質問に対する答えは知っています。答えをコミュニティと共有するためだけにこれを投稿します)

Apache 2.4のローカル(Windows 7)インスタンスでは、これらのURLへのアクセスに使用するブラウザーに応じて、URLを提供するときに遅延またはハングアップが発生します

Firefox / Chromeでは、Apacheは特定のURLでの応答遅くなります。特定のURLで時間の約20%が停滞します。発生した場合、Firefoxが「Waiting for ...」ステータスを表示するまでに5秒の遅延があります。

Internet Explorer 9では、Apacheは再起動されるまでハングし、リクエスト(ブラウザを含む)の処理を停止します。

  • これは、動的(PHP)リクエストでのみ発生するようですが、すべてのリクエストでは発生しません。実際、特定のサイトでのみ発生します。同じマシン上の他のPHPベースのサイトは正常に機能します。
  • 問題のあるサイトが多数のサブドメイン(VirtualHosts)で構成されていることは重要な場合も重要でない場合もあります。
  • WindowsファイアウォールとComodoファイアウォールを無効にしても効果はありません。
  • この問題は、「ビジー」ページ(IFRAMESなどの追加リクエスト)でより頻繁に発生します

httpd.confキープアライブ、EnableMMAP、HostnameLookupsを無効にするなど、多くの変更を試みましたが、何も機能していないようです。


1
いくつかの賛成票を獲得したら、答えを本当の答えに変える評判が得られます。(他に何もなければ、賛成票はあなたにもっと評判を得ます。)
pjmorse

1
Googleからこの投稿を見つけるには、次の解決策もこのエラーに対応します。「(OS 64)指定されたネットワーク名は使用できなくなりました。ドイツ語の場合:「(OS 64)無効なネットワーク名はnicht mehrverfügbarです。:AH00341:winnt_accept:非同期AcceptExが失敗しました。
Uwe Keim

回答:


35

Thomaszによる回答


解決策は、以下を以下に追加することhttpd.confです:

AcceptFilter http none
AcceptFilter https none

Windowsでは、これはAcceptEx()API(WinSockの一部)を無効にする効果があります。これにより、パフォーマンスがいくらか向上しますが、おそらくComodo Firewallと競合します。

リクエストはおそらくComodoのネットワークコードを通過するため、Comodo Firewallを「無効」モードにすることは役に立ちません。問題を解決するには、Comodoを完全にアンインストールする必要があると思います(試していませんが)。

Apache 2.2で同様の問題がある場合は、代わりにWin32DisableAcceptExディレクティブを使用する必要があります。

参照資料

http://httpd.apache.org/docs/2.4/mod/core.htmlから引用:

Windowsのデフォルト値は次のとおりです。

AcceptFilter http data

AcceptFilter https data

Windowのmpm_winntはAcceptFilterを解釈してAcceptEx()APIを切り替えますが、httpプロトコルのバッファリングはサポートしていません。Windows AcceptEx()APIを利用し、接続間でネットワークソケットをリサイクルする2つの値があります。データは、上記のようにデータが送信されるまで待機し、初期データバッファとネットワークエンドポイントアドレスはすべて、単一のAcceptEx()呼び出しから取得されます。connectはAcceptEx()APIを使用し、ネットワークエンドポイントアドレスも取得しますが、接続オプションはどれも初期データ送信を待機しません。

Windowsでは、AcceptEx()ではなくaccept()を使用し、接続間でソケットをリサイクルしません。これは、ドライバーサポートが破損しているネットワークアダプター、およびvpnドライバー、スパム、ウイルス、スパイウェアフィルターなどの一部の仮想ネットワークプロバイダーに役立ちます。

参照:http : //forums.comodo.com/help-for-comodo-antivirus/conflict-with-apache-t260.0.html ; msg31636#msg31636


1
IE10で問題が発生し、Apache2.4(comodoを使用しない)がサービスが再起動されるまでハングし、これらを含めるように.confを変更して修正しました。これを投稿してくれてありがとう。
マットローカンプ

1
これも私にとってはうまくいきました。このトピックに関する情報は現在非常に散らばっているので、私は私のブログにもいくつかの参照を集めました。
スティンデウィット14年

3
私のために働いて、Win 7 x64。なぜnoneApacheのデフォルト設定ではないのだろうか?他のほとんどの「革新的な」機能は、Apacheでデフォルトで無効になっています:P
rustyx

-1

Windows 7 ProボックスでApache 2.4.16を実行していますが、約2週間前にWebサイトが機能しなくなりました。これを追加すると問題が修正されました。

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

あなたの答えは@Eric Fossumによる上記のものとまったく同じであるため、反対票を投じました。
ハルゴビンド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.