Alti casi di messaggi di window zero

Nei miei server web ho visto un alto tasso (106 oltre 13 secondi o 300.000 pacchetti) di messaggi di aggiornamento zero della window inviati dai miei server web ai server di database durante il traffico di picco.

Il firmware è aggiornato:
Ho aggiornato il firmware e il driver alle versioni più recenti che Dell fornisce per le tabs BCM5709C.

Offload TCP è abilitato:
Lasciando fuori dal fatto che vedo un "Total Offload TCP Connections" attivo nell'interface Broadcom Advanced Suite Control (BACs) è abilitata la disconnessione TCP. Non vedo anche che la CPU si aggrappa ai server.

La window di scala è abilitata:
La window di scala è abilitata ma non viene utilizzata molto. Vedo 20 pacchetti con Window Scaling impostato su 300.000 pacchetti.

Statistiche:
Il tempo medio di andata e return è ~ 2MS con un massimo di 3 MS. L'utilizzo della CPU nei server Web non è al massimo.

Le domande:

  1. Non credo che i buffer debbano riempire molto questo sui server web.
  2. Sono le altre metriche accanto alla CPU che dovrei guardare per vedere perché i buffer sono riempimento?
  3. Dato che tutto è aggiornato dovrei cercare di sintonizzare i parametri TCP nei miei server web di Windows 2008 Server R2? Quali aggiustamenti dovrei fare se questo è il caso?

  • Distriggersre il meccanismo di inondazione SYN
  • È il checksum TCP sopra il carico utile?
  • La dimensione della window TCP aumenta drasticamente e il mittente non viene inviato finché il buffer di ricezione non è vuoto
  • Distriggersre l'elaborazione del kernel dei pacchetti TCP per la presa raw
  • Numero di sequenza TCP
  • Posso utilizzare HAProxy per caricare le connessioni telnet?
  • socat: Mostra le connessioni in arrivo
  • Errore di networking con 65k di connessioni TIME_WAIT
  • 2 Solutions collect form web for “Alti casi di messaggi di window zero”

    La questione è già in qualche modo invecchiata. Non sono sicuro se è ancora irrisolto, ma cercherò comunque alcuni consigli per la risoluzione dei problemi.

    Innanzitutto, è importnte verificare where si verificano annunci di zero-window. A certi punti dello scambio di protocolli potrebbe essere perfettamente valido per loro se il server web non prevede semplicemente che i dati tornino come risposta in un determinato momento e forse hanno impostato il buffer di ricezione a 0 per una data socket o ha il buffer di ricezione riempito semplicemente non recuperare nulla da lì per un istante. Debug di questo richiederebbe la conoscenza del protocollo (meglio ancora le implementazioni) utilizzati.

    Non è necessario regolare alcun valore dei parametri TCP per qualsiasi impostazione LAN comune, TCP è principalmente auto-tuning tranne casi estremi come reti con latenze variables o perdita imprevista di pacchetti.

    Non ho mai eseguito questo problema, ma ho un aspetto che il problema è al livello dell'applicazione. Vorrei iniziare a guardare i contatori perfmon relativi ai processi web. Il "Servizio risorse Internet Information Services (IIS) 7.0 Resource Kit" e il "Consulente Pocket Administrator di Internet Information Services (IIS) 7.0" hanno entrambe informazioni relative al monitoraggio e al tuning delle performance, purtroppo nessuno è libero.

    http://www.microsoft.com/learning/en/us/book.aspx?ID=9550&locale=en-us

    http://www.microsoft.com/learning/en/us/book.aspx?ID=10442&locale=en-us

    EDIT:

    Un ansible metodo di monitoraggio (in realtà molto crudo) sarebbe quello di interrompere temporaneamente i servizi web sul server e scaricare un file di grandi size o un gran numero di piccoli file sul server web e vedere se si dispone della stessa condizione della window zero. Se lo fai allora potete probabilmente escludere i problemi di risorse con i servizi web come causa. Se non puoi quindi concentrare tutti i tuoi sforzi sull'analisi dell'uso delle risorse dei servizi web per trovare la causa.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.