9
votes

Quels joueurs de performance clés devrais-je surveiller pour l'application ASP.NET

J'ai un site qui reçoit 5 millions de demandes par jour. Les jours lourds, les pages prennent environ 10 secondes pour revenir. Je sors aussi des exceptions de mémoire. J'ai lu la Améliorer les performances et l'évolutivité de l'application .NET de Microsoft et voyez qu'il y a beaucoup de métriques que je pourrais regarder. Ma question est la suivante:

Quels sont les comptoirs les plus élémentaires que je devrais regarder qui va:

  • Dis-moi où les 10 secondes sont dépensées
  • Dis-moi où est la mémoire utilisé?

    Ceci est une application ASP.NET 2.0 en cours d'exécution sur Win2003 avec IIS6


2 commentaires

Utilise-t-il une base de données et si oui quel type?


Oui. Oracle. Bien que toutes mes dépendances soient comptabilisées avec leurs propres compteurs de performance.


5 Réponses :


0
votes

Si vous le regardez à partir d'un niveau très basique, vous n'avez que 4 choses principales:

  • DISK
  • CPU
  • mémoire
  • Réseau

    Vous pouvez surveiller ces éléments: le disque est la longueur de la file d'attente, les autres sont l'utilisation des%.

    Cependant, le problème peut ne pas être l'un d'entre eux. Il pourrait s'agir d'un paramètre de configuration qui, par exemple, définit le nombre maximal de connexions. Un bon endroit pour commencer à rechercher ce sont le journal d'erreur IIS ou le journal des événements.


0 commentaires

0
votes

La clé d'une amélioration de performance facile n'est pas toujours la façon dont votre application est écrite. Il pourrait être écrit aussi parfaitement que possible et avoir des problèmes de performance. Une façon d'obtenir des heures de chargement rapide de la page est d'utiliser la mise en cache de page.

the après l'article est un bon départ.


0 commentaires

1
votes

Étant donné que le nombre de demandes par jour est d'environ 5 millions d'enregistrements et en croissance,

Je suggérerais ce qui suit:

côté client

Obtenez Fiddler et obtenez les lectures du nombre de demandes par page et de leur temps de retournement. Faites ceci pour, première demande et demandes consécutives. Vous devez idéalement échantillonner les données pour 5 premières demandes et 5 demandes consécutives avant d'échantillonner les données et tirer des conclusions de celui-ci.

Les paramètres à lire sont:

  • Combien de demandes par page sont passe?
  • Combien d'entre eux peuvent être mis en cache?
  • Les ressources de goulot d'étranglement?

    côté serveur

    Pour identifier le côté du serveur, tournez l'heure de l'aroud, je vous suggérerais Ayendes, Rhino.HttpModule ou quelque chose qui ne vous souvenez pas exactement. Il donne l'heure de la variation d'une page sur le côté serveur.

    Les paramètres à lire sont:

    • est-ce une question de côté serveur ou une question de côté du client?

      Après cela, vous devriez être clairement en mesure de savoir s'il s'agit d'une question de côté client ou d'une question de côté du serveur. Après avoir fait cela, alors vous pouvez vous concentrer sur les paramètres.

      sur la dernière note, je pense que vous pouvez supprimer les modifications apportées à votre code. Parce que, vous suggérez que sous charge, le délai d'exécution est d'environ 10 secondes. Voir, le navigateur ne peut pas demander plus de 6 ressources (+/- 2) à la fois. Donc, quelque chose sous charge est chargé de votre serveur Web. Simulez la situation et voyez le nombre de demandes, le système de fondation de l'équipe, devrait vous aider. En outre, IIS rapporte , peut fournir les demandes du côté serveur. Regardez-les. Ils pourraient vous donner une image claire.

      J'espère que cela aiderait.


0 commentaires

0
votes

Vous ne donnez aucune indication sur l'endroit où le problème potentiel est, alors commencez par les bases mentionnées par @shiraz. Il y a des compteurs de performance que vous pouvez creuser pour cela devrait vous donner une indication sur l'endroit où le problème est.

Une fois que vous l'avez réduit à une zone donnée, vous pouvez ensuite creuser un peu plus loin pour voir s'il s'agit d'un problème de codage, ou d'une question matérielle.

Mais il n'ya pas d'une magie "regarder ceci" pour résoudre votre problème. Résoudre les problèmes d'évolutivité est difficile.


0 commentaires

0
votes

sur le KPI:

Certains ont déjà mentionné dans les autres réponses. Je ne me souviens pas des noms de comptoirs, mais en général: Demandes par seconde (Web) % Processeur (Web & SQL) Mémoire GC (gros tas, génération 0, 1, 2) Cache Hit Ratio pour votre serveur SQL Longueur de la file d'attente de disque (Web et surtout votre SQL) tout compteur lié au blocage et à l'impasse dans SQL

sur la réponse à vos questions ci-dessus:

passer par le moniteur de performance ne vous dira pas vraiment la réponse à votre question. Vous voudrez peut-être utiliser des tests de charge Web car je vous garantis que votre demande se comportera différemment sous charge si vous ne le testez pas.

Outils que vous souhaitez essayer de vous familiariser pour répondre à ces questions sont les suivants: .NET Profiler (pour profiler votre code ASP.NET) .NET PROFILER CLR (pour profiler l'utilisation de la mémoire)

Mais toujours, créez d'abord des tests Web (vous pouvez facilement faire ce w / Fiddler pour un démarrage) et le personnaliser davantage (pour pouvoir effectuer une liaison de données) W / VS et exécuter le test de charge avec la représentation de données réelle (en capacité) et le nombre d'utilisateurs. À partir des tests Web, vous devriez pouvoir indiquer quelle page sous-performante. Puis explore plus profondément avec les profilers pour savoir pourquoi.

Vous êtes déjà dans la bonne voie en regardant scalenet.pdf (ou la version en ligne). C'est un peu daté, mais c'est toujours valable. Continuez à lire et à appliquer des choses à lire là-bas.


0 commentaires