2009-12-30 1 views
5

nimmt Hier ist, was ich getan habe:eine Fassung auf Windows 7 zu akzeptieren mehr als eine Sekunde

  • ich einen minimalen Web-Server geschrieben (Qt, aber ich glaube nicht, dass hier relevant ist).
  • Ich verwende es auf einem legalen Windows 7 32-Bit.

Das Problem:

  • Wenn ich eine Anfrage mit Firefox, IE, Chrome oder Safari dauert es dauert etwa eine Sekunde vor meinem Server sieht, dass es eine neue Verbindung angenommen werden soll.

Clues:

  • Mit anderen Clients (wget, eigener Test-Client, der einen Socket öffnet nur) als Firefox, IE, Chrome, Safari die neue Verbindung ist innerhalb von Millisekunden zu sehen.
  • Ich installierte Apache und versuchte die oben genannten Clients. Die Bearbeitung der Anfrage dauert ~ 50 ms wie erwartet.
  • Das Problem ist nicht reproduzierbar beim Ausführen von Windows XP (oder Kompilieren und Ausführen desselben Codes unter Linux)
  • Das Problem scheint sich nur bei der Verbindung zu localhost angezeigt. Ein Freund, der über das Internet verbunden war und die Verbindung herstellte, war eine Angelegenheit von Millisekunden.
  • den Server in verschiedenen Häfen Laufen hat keinen Einfluss auf die 1 Sekunde Latenz ist

Hier ist, was ich ohne Glück versucht haben:

  • den Windows Defender-Dienst beendet
  • die Windows-Firewall gestoppt Service

Irgendwelche Ideen? Ist das eine clevere Sicherheitsfunktion in Windows 7? Warum ist Apache nicht betroffen? Warum sind nur die Browser betroffen?

+2

Eine interessante Frage. Ich frage mich, ob Sie auf serverfault.com besser abschneiden würden. –

+0

Danke für den Tipp. Ich werde es versuchen. – eburger

+0

Geht es zufällig über IPv6 auf der lokalen Schnittstelle? –

Antwort

3

Wenn Sie "localhost" anstelle von "127.0.0.1" sagen, erzwingen Sie vor dem eigentlichen Verbindungsversuch eine Namenssuche und fügen eine Verzögerung hinzu.

Darüber hinaus verwenden einige Browser, wie Firefox 3.5+, nicht den DNS-Lookup-Mechanismus des Betriebssystems, weshalb er eine andere Leistung als etwa wget haben kann.

3

Möglicherweise tritt ein automatisches Proxy-Erkennungsproblem auf. In Firefox können Sie dies unter Optionen | deaktivieren Fortgeschritten | Netzwerk | Die Einstellungen; Wählen Sie entweder "Kein Proxy" oder geben Sie explizite Werte an. Es gibt auch das Kontrollfeld "Interneteigenschaften", das die Netzwerkeinstellungen von IE ist, aber auch andere Browser unter Windows können hier Einstellungen befolgen. Deaktivieren Sie erneut die automatische Proxyerkennung. Dies kann auch Verbindungen außerhalb von localhost beschleunigen.

4

Aus irgendeinem Grund benötigt Windows 7 1 Sekunde, um die Adresse localhost aufzulösen, unabhängig davon, ob sie sich in der hosts-Datei befindet.

Hinzufügen von localhost1 zu Hosts-Datei und die Verwendung von das Problem umgeht.

Verwandte Themen