Débogage ASP.NET (niveau 300)
Débogage ASP.NET (niveau 300)
Présentation de l’outillage standard d’ASP.NET 2.0 et de Visual Studio Team System
Health MonitoringProfilingTests de chargeGestion des anomalies dans TFS
Pause
Débogage d’applications ASP.NET en productionPréambuleOutils pour la capture et l’analysePrésentation de WinDbg et SOSIIS et CLRCommande SOSExemple de problématiques
Débogage ASP.NET (niveau 300)
Présentation de l’outillage standard d’ASP.NET 2.0 et de Visual Studio Team System
Daniel TIZONResp. du pôle Génie Logiciel /Team System - [email protected] - http://blogs.developpeur.org/daniel
Introduction
Avec les outils inclus dans ASP.NET et Team System…
Vous disposez d’outils utiles pour éviter de traiter les problèmes en production
Ils sont à votre disposition mais souvent méconnus des développeurs
Agenda
Health Monitoring
Profiling
Tests de charge
Gestion des anomalies dans TFS
D’ASP.NET 2.0
« Comment surveiller les signes vitaux des applications en production »
Health MonitoringHealth Monitoring
Health Monitoring
Un mécanisme standard d’ASP.NET2.0
Gère les événements importants dans la vie de l’application
L’application démarre ou s’arrête
Compilations
Etat du processus
Evénements d’erreurErreurs de requêtes : exception non gérées, etc…
Erreurs de configuration : compilation, parser,…
Extensible
Health Monitoring :Hiérarchie des types d’événements
WebBaseEvent
WebManagementEvent
WebApplicationLifetimeEvent WebRequestEvent
WebBaseErrorEvent
WebErrorEvent
WebRequestErrorEvent
WebAuditEvent
WebFailureAuditEvent
WebSuccessAuditEvent
Health Monitoring :WebBaseEvent
Contient des informations communes
Des types plus spécialisésPile des appels, adresse du client, informations de thread/process, information de requête
public class WebBaseEvent {// propertiespublic DateTime EventTime;public string Message;public object EventSource;public long EventSequence;public int EventCode;public int EventDetailCode;
// methodsstatic public void Raise(WebBaseEvent
eventRaised);}
Health Monitoring :Configuration
Dans le Web.config du serveur
Dans le Web.config de l’application
Section <healthMonitoring><eventMappings> événements gérés
<providers> destinataires enregistrés
<rules> mappage événements/destinataires
<profiles> paramètres des événements
<bufferModes> paramètres des destinataires
Health Monitoring :Destinataires d’événements
S’appuie sur le modèles de providers
Providers disponiblesEventLogWebEventProvider
BufferedWebEventProvider
MailWebEventProvider
SimpleMailWebEventProvider
SqlWebEventProvider
TemplatedMailWebEventProvder
TraceWebEventProvider
WMIWebEventProvider
Extensible
Health Monitoring :Filtrage des événements
Filtrage par hiérarchie de typeExemple : capturer toutes les erreurs ou uniquement les erreurs de configuration
Les types peuvent être mappés à plusieurs fournisseurs
Exemple : Toutes les erreurs Event Log
Erreurs de configuration Email
Health Monitoring :Contraintes sur les événements
Par palierEx: 1 par minute
Par seuilsMinima/Maxima
Ex : seulement 10 premières occurrences
Ex : seulement à partir de la 10ième occurrence
Health Monitoring
DemoDemo
Dans Visual Studio 2005for Team Developers
« Identification des portions de codes à optimiser (mémore/perf) »
Le ProfilingLe Profiling
Le Profiling
Intégré à Visual Studio 2005 for Team Developers
Rassemble les informations sur les temps d’exécution et performances
Méthodes qui prennent le plus de temps
Consomment le plus de mémoire
Les plus appelées
Deux méthodes de mesureSampling : ponctionne des informations à intervalles réguliers sur ce qui est exécuté
Instrumentation : enregistre tous les appels
Le Profiling
Code managé v2.0
Tout type de cibleExécutables
Bibliothèques de classes
Applications Web ASP.NET
Services Windows
VS n’a pas besoin d’être lancé
Permet de rapidement maximiser les gains de performance
Profiling sur les tests Unitaires également
Profiling :Sampling ou Instrumentation
Le Sampling a moins d’impact sur l’exécutionAnalyse de la pile
Non intrusive
Des méthodes peuvent être manquées
L’instrumentation insère du code entre les méthodes
Résultats précis
Coûteux sur l’exécution
mainmain AMethodAMethod BMethodBMethod
Analyse sans modification de l’application
main 3main 3AMethod 6AMethod 6
BMethod 9BMethod 922
Profiling :Sampling
mainmain AMethodAMethod BMethodBMethod
main main 001001
AMethodAMethod 00230023
BMethodBMethod 00980098
Profiling :Intrumentation
Injection de code
Profiling :depuis Visual Studio 2005
Via le menu Tools/Performances Tools
Performance WizardChoix de l’application à profiler:
Projet de la soluton couranteExécutable (.exe),Librairie (.dll),Application ASP.NET.
Choix de la méthode:Sampling,Instrumentation
Performance ExplorerConfiguration, exécutionAnalyse et stockage des résultats
RésuméFonctions et Appelant/AppelésPile des appelsExportation XML
Profiling :à la ligne de commande
En mode instrumentationVSPerfCLREnv /traceonVSInstr <binaire>VSPerfCmd /start:trace /output:<fichier de sortie>.VSPExécuter l’applicationVSPerfCmd /shutdown
En mode SamplingVSPerfCLREnv /sampleonVSPerfCmd /start:sample / output:<fichier de sortie>.VSPVSPerfCmd /launch:<binaire> /args:<arguments>Intéragir avec l’application et sortirVSPerfCmd /shutdown
En s’attachant à un processus en mode SamplingVSPerfCLREnv /sampleonDémarrer l’applicationVSPerfCmd /start:sample / output:<fichier de sortie>.VSPVSPerfCmd /attach:<PID>Intéragir avec l’application et sortirVSPerfCmd /detach:<PID>VSPerfCmd /shutdown
Profiling
DemoDemo
Dans Visual Studio 2005for Team Testers
« un moyen de détecter des problèmes habituellement remontés qu’en production »
Les Tests de chargeLes Tests de charge
Tests de Charge
Intégré à Visual Studio 2005 for Team Testers
Charge constante ou progressive
Applications Web ou tests unitaires
Récolte des données sur les performancesDe l’application
Des serveurs concernés
Génère des rapports
Possibilité d’ajouter un contrôleur et agents externes
Tests de Charge :Types de charge supportés
Charge fixeNombre fixe d’utilisateurs,
Permet de vérifier que l’application tient
Charge progressiveLe nombre d’utilisateurs varie,
À partir d’une valeur minimale,
Par paliers,
Jusqu’à une valeur limite
Permet de déterminer les limites de l’application
Tests de Charge :Sur des Tests Web
Créer des test webEnregistrer le scénario de navigation dans IE
Scripter/modifier l’enregistrement
Possibilités de databinding
Définir la répartitionselon les types de navigateurs
Le(s) type(s) de connexion utilisé(s)
Les tests sélectionnés (scénarios différents)
Exemple:10% de Firefox, 5% de smartphone, 85% IE6.0
90% ADSL, 10% de modem 56k…
90% d’affichage de la page d’accueil, 10% création commande
Tests de Charge :Procédure pas à pas
Créer un projet de type Tests
Créer des tests Web et/ou Unitaires
Créer un test « Load Test »
Sélectionner les tests Web/UnitairesDistribution des % d’exécution de chacun
Choisir le type de charge
Sélectionner les compteurs de performance
Tests de Charge :Agents de test
VS2005 Team Edition for Software Testers Load Agent
Produit séparé de Team Suite
Permet de simuler plus de chargeEnv 1000 par processeur
Composé de :Team Test Load Agent : simule les tests
Team Test Load Controller : pilote les agents
Tests de Charge
DemoDemo
avec
Team Foundation Server (TFS)
« Remontée des anomalies depuis des applications Web en production aux équipes de développement dans TFS »
Gestion des anomaliesGestion des anomalies
Team Foundation Server:Une extension de VS
Chef deProjet
ArchitecteApplication
Développeur Testeur
ArchitecteInfrastructure
Team Foundation ServerTeam Foundation Server
Utilisateurs &Management
Navigateur Web
Team ExplorerMicrosoft Project Microsoft Excel
Team Edition for Testers
Team Edition for Developers
Team Editionfor Architects
WorkWorkItemsItems
ServeurServeurBuildBuild
ContrôleurContrôleurde Versionsde Versions
PortailPortailProjetProjet
EtatsEtats& Analyses& Analyses
Team Foundation Server:Architecture
Architecture multi-coucheCouche données
SQL Server 2005
Couche applicativeWebServicesWindows Sharepoint ServicesReporting Services
Couche clienteVisual Studio 2005MS Office : Excel / ProjectInternet Explorer (via WSS)Team Explorer…
Team Foundation Server: Architecture logique
Team Foundation couche donnéesTeam Foundation couche données
SQL Reporting servicesSQL Reporting services
WI(Product Studio)
WSS (portail projet)WSS (portail projet)
SCC MéthodologiesDonnées de compilation
Warehouse
Team Foundation services de donnéesTeam Foundation services de données
Team Foundation services d’intégrationTeam Foundation services d’intégration
Gestion des Work Items
Gestion de sources Services de compilation
Evénements et notifications
Service de liaisonService
d’enregistrement
Rapports
Web Parts
Packages
OfficeOffice
Plug-inExcel
Plug-inMS Project
Lignes de commande IE
Modèle objet de Team Foundation (API managée)
MSSQL/TCP
SOAP/HTTP(S)
Visual StudioVisual Studio
Les Work Items:De quoi s’agit-il ?
Un concept générique pourCréer de l’information
La faire évoluer
La partager
La suivre
Basés sur des modèlesDonnées, comportement
Définis au niveau Team Project
Extensibles
Les Work Items:Concrètement
Un Work Item possède :Un type:
Bogue, Tâche, Demande d’évolution,…
Des états:Actif, Résolu, Fermé,…
Motif de passage d’un Etat à l’autre Nouveau, Fixé, Obsolète, Non reproduit
Des champs:Titre, Description, Date, Assigné à , Area, Itération,…
Un historique
Des pièces jointes
Peuvent être liés àDu code, un test, résultat d’une compilation, un autre Work Item, Un fichier, un lien hypertexte
Modèle Objet:Team Foundation Server
C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies
Modèle Objet:Work Items
Gestion des anomalies dans Team Foundation Server
DemoDemo
Ressources
De manière généraleLes starters kits : http://www.asp.net/downloads/starterkits/default.aspx?tabid=62
Télécharger Visual Web Developer 2005 Express Edition : http://www.microsoft.com/france/msdn/vstudio/express/vwd/default.mspx
Le centre de développement ASP .NET sur MSDN : http://www.microsoft.com/france/msdn/aspnet/default.mspx
Ressources
A propos de l’health monitoringASP.NET Health Monitoring : http://msdn2.microsoft.com/en-gb/library/ms178701.aspx
Vue d'ensemble du contrôle d'état ASP.NET : http://msdn2.microsoft.com/fr-fr/library/ms178703.aspx
Procédure pas à pas : écoute des événements WMI lors du contrôle d'état ASP.NET : http://msdn2.microsoft.com/fr-fr/library/ms178713.aspx
A propos du ProfilingVisual Studio Team System 2005 Performance Tool FAQ : http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=339481&SiteID=1
A propos des Tests de ChargeTest de charge avec Team System : quoi, quand, comment ? : http://blogs.microsoft.fr/antoined/archive/2005/12/20/16639.aspx