2009-12-30 6 views
5

Ecco quello che ho fatto:Rispondere ad una presa su Windows 7 richiede più di un secondo

  • Ho scritto un web server minima (usando Qt, ma io non credo che sia rilevante qui).
  • Lo sto eseguendo su Windows 7 a 32 bit legale.

Il problema:

  • Se faccio una richiesta con Firefox, IE, Chrome o Safari prende prende circa un secondo prima che il mio assistente vede che c'è un nuovo collegamento per essere accettato.

Indizi:

  • L'uso di altri clienti (wget, proprio client di prova che appena si apre un socket) rispetto Firefox, IE, Chrome, Safari vedendo la nuova connessione è questione di millisecondi.
  • Ho installato Apache e ho provato i client sopra menzionati. Il servizio della richiesta richiede ~ 50ms come previsto.
  • Il problema non è riproducibile quando si esegue Windows XP (o si compila e si esegue lo stesso codice su Linux)
  • Il problema sembra presentarsi solo quando ci si connette a localhost. Un amico connesso su Internet e che serviva la connessione era questione di millisecondi.
  • esecuzione del server in diversi porti non ha alcun effetto sul 1 secondo di latenza

Ecco quello che ho provato senza fortuna:

  • arrestato il servizio di Windows Defender
  • fermato il Windows Firewall servizio

Qualche idea? Si tratta di una "funzionalità di sicurezza" intelligente in Windows 7? Perché Apache non è interessato? Perché sono interessati solo i browser?

+2

Una domanda interessante. Mi chiedo se staresti meglio su serverfault.com. –

+0

Grazie per il suggerimento. Ci proverò. – eburger

+0

Sta andando oltre IPv6 sull'interfaccia locale per caso? –

risposta

3

Se stai dicendo "localhost" invece di "127.0.0.1", stai forzando una ricerca del nome prima del tentativo di connessione effettivo, aggiungendo un ritardo.

Inoltre, alcuni browser, come Firefox 3.5+, non utilizzano il meccanismo di ricerca DNS del sistema operativo, motivo per cui può avere prestazioni diverse rispetto, ad esempio, a wget.

3

È possibile che si stia verificando un problema di individuazione automatica del proxy. In Firefox, puoi disabilitare questo in Opzioni | Avanzato | Rete | Impostazioni; seleziona "Nessun proxy" o assegna valori espliciti. C'è anche il pannello di controllo di Internet Properties, che è le impostazioni di rete di IE, ma anche altri browser su Windows possono obbedire alle impostazioni. Di nuovo, disabilita l'individuazione del proxy automatico. Questo può velocizzare le connessioni anche al di fuori dell'host locale.

4

Per qualche motivo Windows 7 impiega 1 secondo per risolvere l'indirizzo localhost indipendentemente dal fatto che si trovi nel file hosts.

Aggiunta di localhost1 al file hosts e utilizzo di ciò aggira il problema.