Upload
anastaise-albert
View
117
Download
0
Tags:
Embed Size (px)
Citation preview
Débogage d'applications ASP .NET en production
Sébastien BovoSupport Développeurs - Microsoft [email protected] – http://blogs.microsoft.fr/sbovo/
Agenda
Préambule
Outils pour la capture et l’analyse
Présentation de WinDbg et SOS
IIS et CLR
Commandes SOS
Exemples de problématiques
Préambule
Comportement anormal d’une application ASP.NET mise en pré production ou production :
Un état de blocage ou d’attente qui empêche le traitement des requêtes (deadlock ou hang du processus d’exécution)
100% CPU du processus d’exécution
Apparition de messages d’erreurs aux utilisateurs alors qu’aucune exception n’est loguée (Exceptions non gérées)
Un arrêt du processus d’exécution inexpliqué (crash de W3WP.EXE)
Préambule
ProblèmeNon identifié au préalable lors du développement et de la phase de tests
Ne pouvant être reproduit sur une autre plateforme
Comment faire pour trouver l’origine du problème ?
1. Capture d’informations
2. Analyse ultérieure
Outils – capture d’informations
OutilsMoniteur de performance
Journaux d’évènements
Prise de dumpsAdplus.vbs
-hang
-crash
Debugdiag
Outils pour l’analyseWinDbg
Extensions WindDbg comme SOS
Outils – capture d’informations
Qu’est-ce qu’un dump de mémoire ?Capture de l’espace d’adressage d’un processus
Pourquoi est-ce utile ?Etat des threads
Piles d’appels
Objets en mémoire
Modules chargés
Outils – Analyse
OutilsWinDbg
Extensions WindDbg comme SOS
Présentation de WinDbg et SOS
Qu’est ce que WinDbg ?Le débogueur le plus utilisé chez Microsoft
Débogage User et Kernel
Peut être étendu en écrivant des extensions
Qu’est ce que SOS ?Extension WinDbg
Connait les structures mémoires interne utilisées par .NET
Présentation de WinDbg et SOS
Chargement des symboles.sympath SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
.reload
Chargement de l’extension SOS.load clr10\sos.dll
Ou
.loadby sos mscorlib.dll
!help
Présentation de WinDbg et SOS
kp Affiche la pile d’appel de tous les threadsQue fait le processus au moment de la prise de
dump
~*kp Pour tous les threads
~1s Changement de thread
!clrStack Montre la partie managée du thread
~*e !clrStack Pour tous les threads
IIS
Processus d’exécutionaspnet_wp.exe (IIS5) ou w3wp.exe (IIS6)
ASP.NET runtime dans .NET CLRinetinfo.exe (IIS5)
HTTP pipelineaspnet_isapi.dll
(code natif)
aspnet_isapi.dll(code natif)
http.sys: driveren mode kernel (IIS 6)
HttpApplication\vdir1
HttpApplication\vdir2
CLR
Il n’existe pas de processus managéUn processus Win32 charge le runtime .NET
Dans un processusPlusieurs AppDomains = séparations logiques
1 AppDomain plusieurs threads
1 Thread plusieurs AppDomains
CLR
En ASP.NET, 1 application = 1 AppDomain
HeapsObjets managés
Garbage CollectorGénérations
Compactage
large objects heap
Commandes SOS
!DumpHttpRuntime Applications ASP.NET
!FindDebugTrue Applications qui ont debug=true
!FindDebugModules Modules/dlls compilés en mode debug
Commandes SOS
!threads Indique les threads managés
!ASPXPages Parse les threads pour dire lesquels sont relatifs à l’exécution de pages ASPX
!runaway Montre le temps CPU pour chacun des threads
Commandes SOS
!eeheap -gc Taille des heaps du Garbage collector
!eeheap -loader Assemblées chargées
!DumpHeap Affiche les objets managés-stat
-mt
-min
Commandes SOS
!dumpobj Donne l’objet managé
!dumpallexceptions Fournit toutes les exceptions du dump
!gcroot indique qui maintient une référence sur l’objet
Exemples de problématiques
Application ASP.NET présentant des problèmes de performances important
Le temps de réponse s’écroule avec la charge utilisateur
Non Réponse du serveur dans certains cas
Le problème disparait avec un charge moins importante
Exemples de problématiques
Exemple d’application ASP.NET ayant un fuite mémoire
La taille du processus W3WP.EXE ne cesse d’augmenter
A partir des compteurs de performanceSi « Process/Virtual Bytes » et « .net CLR Memory/# Bytes in all Heaps » suivent la même progression…
Fuite mémoire d’objets managés
Ressources
Téléchargement de WinDbg - http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
Ressources
Troubleshooting ASP.NET using WinDbg and the SOS extension - http://support.microsoft.com/?id=892277
Reference SOS - http://msdn2.microsoft.com/en-us/library/ms404370.aspx
Ressources
Compteurs de performanceOptimizing IIS 6.0 Performance (IIS 6.0) – http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/e621190d-1015-40c2-a5ec-0dcb32c98286.mspx
En particulierMonitoring ASP.NET Performance (IIS 6.0) - http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/97d0872a-96b3-41e4-8997-b174a9dbb87f.mspx?mfr=true
Controlling Memory Usage (IIS 6.0) - http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/ad56540c-2323-4316-b981-7ebb70352baa.mspx
Ressources
Compteurs de performanceASP.NET Performance Counters (IIS 6.0) - http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/a8c5b994-7722-4dc6-a246-7dfe667c6816.mspx?mfr=true
Performance Counters for ASP.NET - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconmonitoringaspnetapplicationperformance.asp?frame=true