Ho una situazione in cui un client dirà "Ho inviato una richiesta al tuo server Web alle 10:03:24 e ci sono voluti 20 secondi, perché?". Lo vedo anche nei registri IIS, ma il modulo ASP.NET del server lo ha registrato impiegando 100 ms e i contatori CPU e disco erano bassi.
Ho il sospetto che sia dovuto a una connessione di rete lenta. Come posso provarlo?
Inizia con la ricerca di pacchetti tra il browser del tuo client e tutte le fonti di immagini / script / html per la suddetta pagina web. Se trovi cadute di pacchetti coerenti, allora sai per certo che c'è qualcosa nella rete che deve essere riparato ... anche se è solo un collegamento che è sovraccarico. I drop di pacchetti non sono l'unica ragione per una rete lenta, ma è la fonte più comune nella mia esperienza. Altre fonti potrebbero essere un proxy o un motore cache configurato in modo errato. Purtroppo, non posso elencare qui tutti i possibili colpevoli della rete.
Tuttavia, le persone spesso danno la colpa alla rete, quando in realtà i problemi di velocità sono ben sotto il loro controllo. Possibili spiegazioni:
- Supponiamo che l'HTML per quella pagina sia stato scritto male e che carichi gli script richiesti nell'ordine sbagliato in modo che l'intera pagina venga visualizzata lentamente, anche se quasi tutte le risorse erano a posto.
- La pagina è in attesa di una risorsa che semplicemente non esiste e scade durante l'attesa.
- Uno script è in un ciclo lento che si blocca per un po '
- Un motore di cache impiega molto tempo a consegnare un'immagine
- Il tuo CGI sta cercando qualcosa in un database e la ricerca stessa è lenta
- Stai utilizzando Google Analytics , che rallenta le cose a causa del modo in cui la pagina è scritta
Potrei continuare, ma il punto è che devi inchiodare il motivo esatto per cui la pagina è lenta da solo. È possibile una rete difettosa; è anche possibile che altri fattori contribuiscano alla prestazione lenta.
Per diagnosticare ulteriormente:
- Se la pagina si carica bene in Firefox, la scheda Rete in Firebug è tua amica (Hit F12, quindi vai alla scheda Rete e ricarica la pagina). Firebug ti offre un bel diagramma a cascata su come viene caricata la pagina e dove sono i ritardi
- Se la pagina si carica bene in Chrome, puoi fare qualcosa di simile (Hit CntlShiftI, fai clic sulla scheda di rete e ricarica la pagina).
- Se la pagina è supportata solo in IE (tra l'altro, peccato per i tuoi sviluppatori HTML), la soluzione migliore è iniziare a caricare ciascuno di questi elementi della pagina ASP singolarmente con
curl
fino a quando non trovi qualcosa che sembra troppo lento, quindi scopri perché quel particolare elemento è lento.
A proposito, gli esempi di Chrome e Firefox hanno usato una query CGI da Debian.org ; questo è un buon esempio di ritardo derivante da una ricerca CGI.
Quando tutto il resto fallisce, puoi ottenere un .pcap
da WireShark ed eseguirlo tcptrace
; tuttavia, mentre tcptrace
è molto bravo nell'analizzare i dump di pacchetti, non ci sono garanzie che tu possa isolare il problema da tcptrace
solo. Vedi questa risposta per informazioni sull'uso della tcptrace
diagnostica.