2010-10-30 6 views

Répondre

3

Pour le processus de travail, vous pouvez lire programme Process -> Temps écoulé de la perf correspondant. counter (1) ou directement à partir de l'espace de noms System.Diagnostics.Process; Pour le AppDomain, vous pouvez définir une variable au niveau de l'application au démarrage pour servir de référence et la mesurer manuellement.

Scott Mitchell a en fait quelques bons posts à ce sujet qui sont encore pertinents 8 ans plus tard, croyez-le ou non (2). Fonctionnant sur Cassini (Vista, VS 2008), je vois un système précis en temps avec:

TimeSpan.FromMilliseconds(Environment.TickCount) 

... et processus/AppDomain avec une précision d'temps avec ces:

foreach (Process p in Process.GetProcessesByName("WebDev.WebServer")) 
{ 
    Response.Write(DateTime.Now.Subtract(p.StartTime).ToString() + "<br/>"); 
} 

Response.Write(DateTime.Now.Subtract((DateTime)Application["StartTime"]).ToString()); 

Je suis également en mesure d'obtenir le bon PerfomanceCounter, mais ne peut pas sembler lire la valeur correcte (toujours égale à zéro, sous ma configuration):

Response.Write(new PerformanceCounter("Process", "Elapsed Time", "WebDev.WebServer").NextValue() + "<br/>"); 

articles de Scott sont definitel y vaut une lecture - il y a une richesse d'informations dans ProcessInfo et ProcessModelInfo (ex. ProcessModelInfo.GetHistory), mais malheureusement, ce n'est pas disponible sur Cassini:

métriques de processus ne sont disponibles que lorsque le modèle de processus ASP.NET est activée. Lors de l'exécution sur les versions de IIS 6 ou plus récent dans le processus d'exploitation en mode d'isolation, cette fonctionnalité n'est pas prise en charge .

MISE À JOUR: grande explication de la façon de lire le compteur correctement pour éviter le zéro NextValue(): http://blogs.msdn.com/b/bclteam/archive/2006/06/02/618156.aspx

HTH

(1) https://serverfault.com/questions/90927/lifetime-of-iis-worker-process-or-appdomai

(2) http://www.4guysfromrolla.com/articles/041002-1.aspx

Questions connexes