Apache 2.4 unter Windows reagiert langsam und hängt beim Bereitstellen einiger dynamischer Seiten

26298
Tomasz P. Szynalski

(Ich kenne die Antwort auf diese Frage. Posten, um die Antwort mit der Community zu teilen.)

Bei meiner lokalen (Windows 7) -Instanz von Apache 2.4 kommt es beim Bereitstellen einiger URLs zu Verzögerungen oder zum Aufhängen, je nachdem, welchen Browser ich für den Zugriff auf diese URLs verwende .

Mit Firefox / Chrome reagiert Apache auf bestimmte URLs nur langsam . Die Trägheit tritt in etwa 20% der Fälle bei einer bestimmten URL auf. In diesem Fall gibt es eine Verzögerung von 5 Sekunden, in der Firefox den Status "Warten auf ..." anzeigt.

Mit Internet Explorer 9 hängt Apache einfach und stellt keine Anfragen mehr (mit einem beliebigen Browser), bis er neu gestartet wird.

  • Dies scheint nur bei dynamischen (PHP) -Anfragen der Fall zu sein, jedoch nicht bei allen. Tatsächlich kommt es nur an einer bestimmten Stelle vor. Andere PHP-basierte Sites auf demselben Rechner funktionieren einwandfrei.
  • Es kann oder kann nicht signifikant sein, dass die problematische Site aus einer großen Anzahl von Subdomains (VirtualHosts) besteht.
  • Das Deaktivieren der Windows-Firewall und der Comodo-Firewall hilft nicht.
  • Das Problem scheint häufiger bei "belebten" Seiten zu sein (zusätzliche Anfragen für IFRAMES usw.)

Ich habe viele Änderungen an httpd.conf(zB Deaktivieren von KeepAlive, EnableMMAP, HostnameLookups) versucht, aber es scheint nichts zu funktionieren.

27
Wenn Sie einige Up-Votes haben, haben Sie den Ruf, die Antwort in eine echte Antwort zu verschieben, die Sie dann tun sollten. (Wenn nichts anderes, werden die Upvotes dann mehr Ansehen erhalten.) pjmorse vor 11 Jahren 1
Um diesen Beitrag hier bei Google zu finden: Die untenstehende Lösung funktioniert auch für diesen Fehler: "** (OS 64) Der angegebene Netzwerkname ist nicht mehr verfügbar.: AH00341: winnt_accept: Asynchronous AcceptEx fehlgeschlagen. **". In deutscher Sprache: "** (OS 64) Der angegebene Netzwerkname ist nicht mehr verfügbar.: AH00341: winnt_accept: Asynchronous AcceptEx fehlgeschlagen. **". Uwe Keim vor 8 Jahren 1

2 Antworten auf die Frage

32
Eric Fossum

Beantwortet von Thomasz


Die Lösung besteht darin, Folgendes hinzuzufügen httpd.conf:

AcceptFilter http none AcceptFilter https none 

Unter Windows hat dies zur Folge, dass die AcceptEx () - API (Teil von WinSock) deaktiviert wird, die einige Leistungsverbesserungen bietet, die jedoch wahrscheinlich mit der Comodo Firewall in Konflikt stehen.

Wenn Sie die Comodo Firewall in den "Deaktiviert" -Modus versetzen, ist dies nicht hilfreich, da Anfragen wahrscheinlich immer noch über den Netzwerkcode von Comodo laufen. Ich denke, Comodo müsste vollständig deinstalliert werden, um das Problem zu beheben (obwohl ich es nicht versucht habe).

Wenn Sie ein ähnliches Problem mit Apache 2.2 haben, sollten Sie stattdessen die Direktive Win32DisableAcceptEx verwenden.

Verweise

Zitieren von http://httpd.apache.org/docs/2.4/mod/core.html :

Die Standardwerte unter Windows sind:

AcceptFilter http data

AcceptFilter https data

Mpm_winnt des Fensters interpretiert den AcceptFilter so, dass er die AcceptEx () - API umschaltet, und unterstützt keine HTTP-Protokollpufferung. Es gibt zwei Werte, die die Windows AcceptEx () - API verwenden und Netzwerk-Sockets zwischen Verbindungen wiederverwenden. Daten warten, bis die Daten wie oben beschrieben übertragen wurden, und die anfänglichen Datenpuffer- und Netzwerkendpunktadressen werden alle vom einzigen AcceptEx () - Aufruf abgerufen. connect verwendet die AcceptEx () - API, ruft auch die Netzwerkendpunktadressen ab, aber wie keine andere wartet die connect-Option nicht auf die erste Datenübertragung.

Unter Windows verwendet keiner die Methode Accept () anstelle von AcceptEx () und recycelt keine Sockets zwischen Verbindungen. Dies ist nützlich für Netzwerkadapter mit defekter Treiberunterstützung sowie für einige virtuelle Netzwerkanbieter wie VPN-Treiber oder Spam-, Viren- oder Spyware-Filter.

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

Ich habe Probleme mit dem IE10 gehabt, der dazu geführt hat, dass Apache2.4 (kein Comodo beteiligt) hängen bleibt, bis der Dienst neu gestartet wird - und die .conf geändert, um diese Probleme zu beheben. Vielen Dank für das Posten. matt lohkamp vor 11 Jahren 1
Das hat auch für mich funktioniert. Ich habe auch ein paar weitere Referenzen auf [mein Blog] (http://stijndewitt.wordpress.com/2014/01/10/apache-hangs-ie11/) gesammelt, da die Informationen zu diesem Thema im Moment sehr verstreut sind. Stijn de Witt vor 10 Jahren 1
Arbeitete für mich, Win 7 x64. Ich frage mich, warum "none" nicht die Standardeinstellung in Apache ist. Die meisten anderen innovativen Funktionen sind in Apache standardmäßig deaktiviert: P rustyx vor 10 Jahren 3
Lebensretter. Vielen Dank! Benjamin vor 9 Jahren 1
-1
pluckyduck

Ich verwende Apache 2.4.16 auf einer Windows 7 Pro-Box, und meine Website hat vor etwa 2 Wochen aufgehört zu arbeiten. Durch das Hinzufügen dieses Problems wurde das Problem behoben.

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 
Sie haben nicht gewählt, weil Ihre Antwort genau dieselbe ist wie die von @Eric Fossum. hargobind vor 7 Jahren 0