J'ai une situation où un client dira: "J'ai envoyé une demande à votre serveur Web à 10 h 03 min 24 s et cela a pris 20 secondes, pourquoi?". Je peux également voir cela dans les journaux IIS, mais le module ASP.NET du serveur l'a enregistré comme prenant 100 ms, et les compteurs CPU et disque étaient faibles.
Je soupçonne que cela est dû à une connexion réseau lente. Comment puis-je le prouver?
Cela commence par la recherche de paquets déposés entre le navigateur de votre client et toutes les sources d'images / scripts / html pour la page Web susmentionnée. Si vous trouvez des pertes de paquets cohérentes, alors vous savez avec certitude qu'il y a quelque chose dans le réseau qui doit être corrigé ... même si c'est juste un lien qui est surchargé. Les pertes de paquets ne sont pas la seule raison d'un réseau lent, mais c'est la source la plus courante de mon expérience. D'autres sources peuvent être un proxy ou un moteur de cache mal configuré. Malheureusement, je ne peux pas lister ici tous les coupables du réseau.
Cependant, les gens blâment souvent le réseau, alors qu'en fait les problèmes de vitesse sont bien sous leur contrôle. Explications possibles:
- Supposons que le code HTML de cette page soit mal écrit et qu'il charge les scripts requis dans le mauvais ordre afin que la page entière s'affiche lentement, même si presque toutes les ressources étaient en place.
- La page attend une ressource qui n'existe tout simplement pas et expire en attendant.
- Un script est dans une boucle lente qui se bloque pendant un certain temps
- Un moteur de cache met longtemps à fournir une image
- Votre CGI recherche quelque chose dans une base de données et la recherche elle-même est lente
- Vous utilisez Google Analytics , ce qui ralentit les choses en raison de la façon dont la page est écrite
Je pourrais continuer, mais le fait est que vous devez déterminer la raison exacte pour laquelle la page est lente vous-même. Un réseau défectueux est possible; il est également possible que d'autres facteurs contribuent à la lenteur des performances.
Pour diagnostiquer davantage:
- Si la page se charge bien dans Firefox, l'onglet Réseau de Firebug est votre ami ( F12cliquez sur, puis allez dans l'onglet Réseau et rechargez la page). Firebug vous donne un joli diagramme en cascade pour savoir comment la page se charge et où sont les retards
- Si la page se charge bien dans Chrome, vous pouvez faire quelque chose de similaire ( CntlShiftIcliquez sur l'onglet réseau, puis rechargez la page).
- Si la page n'est prise en charge que dans IE (btw, honte à vos développeurs HTML), votre meilleur pari est de commencer à charger chacun de ces éléments de page ASP individuellement
curl
jusqu'à ce que vous trouviez quelque chose qui semble beaucoup trop lent, puis découvrez pourquoi cet élément particulier est lent.
BTW, les exemples Chrome et Firefox ont utilisé une requête CGI de Debian.org ; ceci est un bon exemple de retard provenant d'une recherche CGI.
Lorsque tout le reste échoue, vous pouvez obtenir un .pcap
auprès de wirehark et l'exécuter tcptrace
; cependant, bien qu'il tcptrace
soit très bon pour analyser les vidages de paquets, il n'y a aucune garantie que vous pouvez isoler le problème tcptrace
seul. Consultez cette réponse pour plus d'informations sur l'utilisation des tcptrace
diagnostics.