2012-03-30 3 views
2

Ich habe ein Problem mit einer Website mit ASP.Net/C entwickelt, manchmal die gesamte CPU-Nutzung (100%) für eine unbestimmte Zeit. Hast du irgendwelche Ideen/Tipps, wie man vorgehen könnte, was solch ein Ressourcen-Schwein verursachen könnte? Die Website reagiert immer noch, also ist sie nicht abgestürzt oder so ähnlich.Diagnose der Leistung von ASP.net Website/Anwendung Pool

Ich bin ein bisschen ratlos, wo ich anfangen soll!

Danke!

+0

Problem ist nur auf einer bestimmten Seite? – Pankaj

Antwort

1

Verwenden Sie Leistungsindikatoren auf dem Server. Fügen Sie die Zähler für Garbage Collection und Threads hinzu und sehen Sie genau, welcher Thread die CPU verbraucht.

Auch Besuche diesen:

http://weblogs.asp.net/jgalloway/archive/2009/04/09/troubleshooting-an-intermittent-net-high-cpu-problem.aspx

+0

Sorry für die Verzögerung, aber ich war im Ausland - Wo finde ich den Leistungsindikator "Thread Usage"? Dies ist ein Live-Server, auf dem keine Visual Studio-Kopie installiert ist. Im Idealfall würde ich in der Lage sein, etwa 4 Stunden Zeit zu testen und zu sehen, welche Threads zur CPU-Auslastung beitragen. Idealerweise würde ich den Call-Stack zu einem bestimmten Zeitpunkt kennen, da dies mir bei der Diagnose des Problems sehr helfen würde. Irgendwelche Ideen? –

0

ich in der Vergangenheit ein gleiches Problem hatte. Ich hatte hauptsächlich Probleme mit HTML rendering sehr langsam. Ich löste es, indem ich die Trace = true in der Seitenanweisung einsetzte und fand das Ereignis, das Zeit nahm.

Ein anderes Problem war die Memory Management. Ich benutzte Image Classes und nicht Dispose sie richtig. Dafür habe ich angefangen, Dispose() Methode zu verwenden, und ich kann Using-Anweisungen in der Architektur haben.

using (SqlConnection con = new SqlConnection("Connection String")) 
{ 
    using (SqlCommand cmd = new SqlCommand()) 
    { 
     using (SqlDataReader DR = cmd.ExecuteReader()) 
     { 

     } 
     using (DataTable DT = new DataTable()) 
     { 
     } 
    } 
} 

Ich nehme an, Sie haben möglicherweise eine Seite, auf der Sie Datensätze im Übermaß abrufen können. Sie können beginnen, Paging zu verwenden.

Der wichtigste Punkt ist Exception Handling. Try Catch Block sollte nicht in jeder Schicht sein. Es sollte nur in Presentation Layer sein. Wenn eine Ausnahme auftritt, kehrt sie direkt zur aufrufenden Funktion zurück. Also warum Try Catch Block und damit stopping the execution in jeder Schicht schreiben

0

Weit der beste und einfachste Ausgangspunkt ist, Performance-Profiler zu verwenden. Führen Sie es einfach aus und mit etwas Glück haben Sie innerhalb von Minuten ein Problem behoben.

Versuchen Sie dotTrace, es ist eine ziemlich gute. Wenn Sie dem Link folgen, gibt es ein kostenloses 10-Tage-Test- und Video-Tutorial.

Verwandte Themen