41
Débogage ASP.NET (niveau 300)

Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

Embed Size (px)

Citation preview

Page 1: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

Débogage ASP.NET (niveau 300)

Page 2: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 3: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 4: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 5: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

Agenda

Health Monitoring

Profiling

Tests de charge

Gestion des anomalies dans TFS

Page 6: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

D’ASP.NET 2.0

« Comment surveiller les signes vitaux des applications en production »

Health MonitoringHealth Monitoring

Page 7: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 8: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

Health Monitoring :Hiérarchie des types d’événements

WebBaseEvent

WebManagementEvent

WebApplicationLifetimeEvent WebRequestEvent

WebBaseErrorEvent

WebErrorEvent

WebRequestErrorEvent

WebAuditEvent

WebFailureAuditEvent

WebSuccessAuditEvent

Page 9: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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);}

Page 10: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 11: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

Health Monitoring :Destinataires d’événements

S’appuie sur le modèles de providers

Providers disponiblesEventLogWebEventProvider

BufferedWebEventProvider

MailWebEventProvider

SimpleMailWebEventProvider

SqlWebEventProvider

TemplatedMailWebEventProvder

TraceWebEventProvider

WMIWebEventProvider

Extensible

Page 12: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 13: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 14: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

Health Monitoring

DemoDemo

Page 15: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

Dans Visual Studio 2005for Team Developers

« Identification des portions de codes à optimiser (mémore/perf) »

Le ProfilingLe Profiling

Page 16: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 17: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 18: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 19: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

mainmain AMethodAMethod BMethodBMethod

Analyse sans modification de l’application

main 3main 3AMethod 6AMethod 6

BMethod 9BMethod 922

Profiling :Sampling

Page 20: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

mainmain AMethodAMethod BMethodBMethod

main main 001001

AMethodAMethod 00230023

BMethodBMethod 00980098

Profiling :Intrumentation

Injection de code

Page 21: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 22: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 23: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

Profiling

DemoDemo

Page 24: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 25: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling 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

Page 26: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 27: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 28: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 29: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 30: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

Tests de Charge

DemoDemo

Page 31: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 32: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 33: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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…

Page 34: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 35: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 36: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 37: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

Modèle Objet:Team Foundation Server

C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies

Page 38: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

Modèle Objet:Work Items

Page 39: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

Gestion des anomalies dans Team Foundation Server

DemoDemo

Page 40: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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

Page 41: Débogage ASP.NET (niveau 300). Présentation de loutillage standard dASP.NET 2.0 et de Visual Studio Team System Health Monitoring Profiling Tests de charge

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