2010-04-01 3 views
3

Vous êtes tous d'accord avec l'intérêt d'utiliser les compteurs de performance pour les applications serveur.Compteurs de performance dans le développement de serveurs

Je voudrais savoir comment les implémenter en utilisant C#.

compteurs Habituellement de performance ont les attributs suivants:

  1. Ils sont partagés/écriture globale
  2. nécessite des verrous pour assurer la synchronisation
  3. lecture nécessite parfois des verrous trop

Est-il préférable de les mettre à jour de manière asynchrone? Quel est le meilleur moyen de les rendre asynchrones?

Je prévois d'utiliser la fonction ThreadPool.QueueUserWorkItem(). Quelle est votre opinion à ce sujet?

Si mes questions semblent un peu vagues, veuillez consulter le service HelloWorld WCF.

Je veux aussi savoir ce qui suit:

  1. Combien de fois il est d'être frappé d'ensemble et dans une certaine période
  2. Temps moyen/réponse min/max globale et dans une certaine période

Si quelqu'un connaît des moyens spécialisés pour faire cela dans .NET ou WCF, s'il vous plaît faites le moi savoir.

+0

J'ai vu une sorte de classes spéciales pour cette tâche, mais je ne savais pas que quelqu'un peut m'aider à partager un article sur ceux-ci. –

Répondre

3

Si vous utilisez le .NET classes à cet effet il n'y a pas besoin de verrouiller manuellement l'incrément, décrément et requête d'un compteur de performance - le cadre fera pour vous.

Si vous avez besoin d'utiliser des compteurs de performance en code natif, vous devriez plutôt utiliser InterlockedIncrement() et vos amis. Je pense que la mise à jour asynchrone des compteurs de performance n'est pas une bonne idée, mais votre salaire peut varier. Cela pourrait être considéré comme moins utile, si les données sur une situation intéressante arrivent après le fait. Dans tous les cas, je voudrais pas mettre la pression sur le ThreadPool juste pour mettre à jour un compteur de performance. Maintenant, si vous avez besoin de faire le travail qui déclenche le compteur dans un thread de toute façon, ce serait quelque chose de différent bien sûr.

Généralement, je ne pense pas que la mise à jour d'un compteur de performance soit vraiment un goulot d'étranglement, mais plutôt la collecte des données qui sont utilisées pour mettre à jour le compteur.

Par exemple, le.Les compteurs de performance NET GC Memory ne sont mis à jour que quand un GC se produit, car le suivi des informations (en arrière-plan) suffit pour mettre à jour les compteurs chaque fois que des chances sont trop élevées (désolé, pas de référence ici) entrées sur ce sujet particulier).

Enfin, soyez avisé que WCF already provides un nombre plutôt grand de compteurs prêts à l'emploi, ce qui pourrait couvrir tout ce que vous voulez maintenant.

Questions connexes