Je dois effectuer un test de performance/chargement d'un ensemble de services interdépendants. Ils utilisent tous net.tcp et la plupart utilisent des contrats duplex et des files d'attente internes. [classe de file d'attente POCO handrolled utilisant lock (syncRoot) {if (queue.Empty) Thread.Wait(); }]Définition des contrats de niveau de service pour les services WCF
est ici l'approche que je suis venu avec:
- Identifier les services WCF pour être la performance testée
- Identifier les compteurs de performance relavant pour chacun des services
- Identifier la startpoint logique prendrait l'exécution via les services testés
- Exécuter automatiquement des tests unitaires à l'aide de VS.Net pour chacun des services
- Écrire des tests fonctionnels spécifiques (Pour examen Je peux prendre un cas d'utilisation - "Passer une commande" - et écrire des tests qui effectuent tous les appels aux services concernés et excercent généralement toutes les fonctionnalités nécessaires.)
- Utilisez les fichiers de trace de # 5 pour générer Tests unitaires [utilisant le test de charge WCF de CodePlex] (Cela me semble en quelque sorte un outil idéal pour recréer des erreurs d'utilisateur en production/champ dans un environnement de débogage. Disclaimer: Non utilisé l'outil. Impressions de la lecture du projet desc)
- Les tests ci-dessus pourrait être modifié pour faire des appels avec des données d'entrée généré automatiquement
- Introduire des variations à l'entrée si différents chemins de code sont excercised
- données du journal de compteurs de performance
- Analyser et d'identifier les goulots d'étranglement
Questions:
- y at-il une meilleure approche?
- Dans le cas de services utilisant des files d'attente internes, la mesure des performances à l'aide de compteurs de performances STD constitue un problème. J'ai peut-être besoin de compteurs personnalisés?
- Si la valeur 1 est vraie, existe-t-il un moyen d'introduire des compteurs clients sans modifier le code des services testés?
- Dois-je m'intéresser aux résultats de mes tests fonctionnels?
- Existe-t-il un moyen de mettre en œuvre [non intrusif] SLA pour les services WCF? (Je pense que si j'ai suffisamment de données de mes compteurs comme les demandes traitées, les exceptions, le temps de réponse etc., je devrais pouvoir valider mon SLA - servir 200.000 demandes en 5 minutes avec un temps de réponse de 2 secondes pour chaque requête Ma question est peut-être de savoir si je peux juste spécifier mon SLA et un produit/outil pourrait faire toute la plomberie derrière la scène et obtenir une réponse tabulée? Je sais ... Je sais ... Je rêvais de jour :))
- À côté: Quelle est la meilleure méthode pour mettre en file d'attente des demandes en interne dans un service WCF?