I have a situation where a client will say, "I sent a request to your web server at 10:03:24 and it took 20 seconds, why?". I can see this in the IIS logs as well, but the server's ASP.NET module logged it as taking 100ms, and CPU and Disk counters were low.
I suspect that it's due to a slow network connection. How can I prove this?
Ele começa com a procura de pacotes entre o navegador do seu cliente e todos as fontes de imagens / scripts / html para a página da Web mencionada anteriormente. Se você encontrar pacotes consistentes, você tem certeza de que há algo na rede que precisa ser corrigido ... mesmo que seja apenas um link que está sobrecarregado. Os pacotes não são a única razão para uma rede lenta, mas é a fonte mais comum na minha experiência. Outras fontes podem ser um proxy ou mecanismo de cache mal configurado. Infelizmente, não posso listar todos os possíveis culpados de rede aqui.
No entanto, as pessoas geralmente culpam a rede, quando, na verdade, os problemas de velocidade estão bem dentro de seu próprio controle. Possíveis explicações:
- Suponha que o HTML dessa página tenha sido gravado incorretamente e carregue os scripts necessários na ordem errada, de modo que a página inteira seja processada lentamente, mesmo que quase todos os recursos estejam no local.
- A página está aguardando um recurso que simplesmente não existe e expira durante a espera.
- Um script está em um loop lento que bloqueia por um tempo
- Um mecanismo de cache demora muito para entregar uma imagem
- Seu CGI está procurando algo em um banco de dados e a pesquisa em si é lenta
- Você está usando o google analytics , o que atrasa as coisas devido à forma como a página é escrita
Eu poderia continuar, mas o ponto é que você tem que descobrir o motivo exato pelo qual a página está lenta. Uma rede falha é possível; Também é possível que outros fatores estejam contribuindo para o desempenho lento.
Para diagnosticar mais:
- Se a página for bem carregada no Firefox, a guia Rede no Firebug é seu amigo (Hit F12 , em seguida, vá para a guia Rede e recarregue a página). O Firebug fornece um belo diagrama em cascata sobre como a página é carregada e onde os atrasos são
- SeapáginaforbemcarregadanoChrome,vocêpoderáfazeralgosemelhante(HitCtrl+DeslocarI,clicarnaguiaderedeerecarregueapágina).
- Se a página só é suportada no IE (btw, vergonha em seus desenvolvedores de HTML), sua melhor aposta é começar a carregar cada um desses elementos de página ASP individualmente com
curl
até encontrar algo que pareça lento demais e, em seguida, descubra por que esse elemento em particular é lento.
BTW, os exemplos do Chrome e do Firefox usaram uma consulta CGI do Debian.org ; este é um bom exemplo de um atraso que vem de uma consulta CGI.
Quando tudo mais falhar, você poderá obter um .pcap
de wireshark e executá-lo em tcptrace
; No entanto, enquanto tcptrace
é muito bom em analisar os despejos de pacotes, não há garantias de que você possa isolar o problema com tcptrace
sozinho. Consulte esta resposta para obter informações sobre o uso de tcptrace
diagnostics.