web-dev-qa-db-fra.com

IIS: Comment savoir si un temps lent est dû à une connexion réseau lente

Selon - http://support.microsoft.com/kb/944884 , "lorsqu'une réponse élevée ou de grandes réponses sont envoyées à un client sur une connexion réseau lente, la valeur du champ tiré peut être plus que prévu ".

J'ai une situation dans laquelle un client dira: "J'ai envoyé une demande à votre serveur Web à 10:03:24 et il a fallu 20 secondes, pourquoi?". Je peux voir ceci dans le IIS Journaux, mais le module ASP.NET du serveur est enregistré comme prenant 100 ms, et les comptoirs de la CPU et des disques étaient faibles.

Je soupçonne que c'est due à une connexion réseau lente. Comment puis-je prouver cela?

Mise à jour:

1) Celles-ci sont SOAP Demandes de service Web, donc aucun graphique incorporé, juste un http POST avec une seule page XML de résultats.

2) En outre, j'ai reproduit cela en limite la vitesse du réseau sur le côté du client et les symptômes sont exactement les mêmes.

3) Le problème est intermittent, ce qui signifie que la même demande est normalement rapide pour le client mais parfois lent. Je ne peux pas me reproduire moi-même autres que par lutter contre le réseau. La journalisation ASP.NET du serveur le montre toujours vite, mais IIS Logging le montre lentement lorsque le client dit qu'il est lent.

4) Je n'ai accès au serveur que possible que possible auprès du client afin qu'ils acceptent que le problème ne soit pas sur le serveur et sache quel enregistrement/outils à exécuter sur le client pour trouver une cause première.

10
Jon

J'ai une situation dans laquelle un client dira: "J'ai envoyé une demande à votre serveur Web à 10:03:24 et il a fallu 20 secondes, pourquoi?". Je peux voir ceci dans le IIS Journaux, mais le module ASP.NET du serveur est enregistré comme prenant 100 ms, et les comptoirs de la CPU et des disques étaient faibles.

Je soupçonne que c'est due à une connexion réseau lente. Comment puis-je prouver cela?

Il commence par chercher des gouttes de paquets entre le navigateur de votre client et Tout les sources d'images/scripts/html pour la page Web susmentionnée. Si vous trouvez des gouttes de paquets cohérentes, vous savez, bien sûr, il y a quelque chose dans le réseau qui doit être corrigé ... Même si c'est juste un lien surchargé. Les gouttes 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 pourraient être un moteur de proxy ou de cache mal configuré. Malheureusement, je ne peux pas lister tous les coupables de réseau possibles ici.

Cependant, les gens blâment souvent le réseau, lorsqu'ils sont en fait, les problèmes de vitesse sont bien dans leur propre contrôle. Explications possibles:

  • Supposons que le HTML pour cette page ait été écrit mal et charte les scripts requis dans le mauvais ordre afin que toute la page rend lentement, même si presque toutes les ressources étaient en place.
  • La page attend une ressource qui n'existe tout simplement pas en attendant.
  • Un script est dans une boucle lente qui bloque pendant un moment
  • Un moteur de cache prend beaucoup de temps à livrer 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 , qui ralentit les choses en raison de la façon dont la page est écrite

Je pourrais continuer, mais le but est que vous devez clouer la raison exacte de la raison pour laquelle la page est ralentit. Un réseau imparfait est possible; Il est également possible que d'autres facteurs contribuent à la lente performance.

Pour diagnostiquer davantage:

  • Si la page se charge bien dans Firefox, l'onglet Réseau dans Firebug est votre ami (frappé F12, puis allez à l'onglet Réseau et rechargez la page). Firebug vous donne un bon diagramme de cascade pour la façon dont la page se charge et où les retards sont Firebug waterfall
  • Si la page se charge bien en chrome, vous pouvez faire quelque chose de similaire (frappé CntlShiftI, Cliquez sur l'onglet Réseau et rechargez la page). Chrome
  • Si la page n'est prise en charge que dans IE (BTW, honte sur vos développeurs HTML), votre meilleur pari est de commencer à charger chacun de ces ASP éléments de page individuellement avec curl jusqu'à ce que vous trouviez quelque chose qui a l'air trop lent, alors découvrez pourquoi cet élément particulier est lent.

BTW, le Chrome et exemples de Firefox utilisa une requête CGI debian.org ; c'est un bon exemple de retard provenant d'une recherche CGI.

Quand tout le reste échoue, vous pouvez obtenir un .pcap à partir de wifshark et exécutez-le tcptrace ; Cependant, tandis que tcptrace est très bon pour analyser les décharges de paquets, il n'y a pas de garantie que vous pouvez isoler le problème avec tcptrace seul. Voir Cette réponse Pour plus d'informations sur l'utilisation de tcptrace diagnostics.

4
Mike Pennington

Le résultat de la KB article 944884 est que le temps réel nécessaire pour compléter la réponse peut ne pas être reflété avec précision dans le journal. C'est pourquoi l'article mentionne le temps du réseau.

Si le symptôme est reproductible, j'effectue une capture de paquets sur le côté serveur (et de préférence le côté client également) pour voir les temps réels que la connexion a été acquittée par le client.

0
Greg Askew

Le délai de 20 secondes pourrait également être causé par IIS Devoir le redémarrer, c'est W3WP.exe qui s'endormira quand il est inutilisé.

0
Steve Rollins