Langsam ASP.NET app-Ladezeiten - Kann ich track/trace/Zeit die ganze Last Zyklus?
Den ASP.NET web-app-Projekt an dem ich gerade arbeite, ist immer langsamer im Laufe der Zeit zu re-load (In IIS oder der .NET-dev-server). Derzeit dauert es:
- 1:28 Minuten zum laden über ein F5 debug
- 41 Sekunden auf refresh im browser, nachdem ein build (nicht Wiederaufbau)
Die Maschine ist ziemlich schnell -, Ein Core 2 Quad 2,40 ghz, 8 gig o' RAM hat, läuft die dev-Maschine unter HyperV mit 2 gig o' RAM zugeteilt, um die dev VM.
Gibt es eine Möglichkeit, trace /Bericht über die der gesamte Zyklus der ersten Last? Wenn ich könnte sehen, wie lange es dauert, die grundlegende IIS-Workerprozess zu starten, laden von DLLs, führen der tatsächliche .NET-code, das wäre toll.
Ich weiß, ich kann einen profiler einsetzen, um auf der code -, dem noch nicht aufgetaucht jeder ultra-slow-DB-Verbindungsaufbau-Zeiten, aber ich würde gerne einen Einblick auf die Leistung von dem Zeug, bevor die Seite verarbeitet wird. Ich kann sehen, dass der CPU-monitor Treffer 100% für etwas in der Mitte des Prozesses, RAM-Auslastung springen ein wenig, aber bin auf der Suche nach besseren Einblick auf das, hoffentlich schneiden sich die Dinge ein wenig.
Obwohl ich gar keine Messungen zu Beginn des Projektes (4 Monate alt), ich bin ganz sicher, der laden war eine relative Kinderspiel.
Jede Hilfe viel geschätzt,
Programmierer-wer-kann-nur-trinken-so-viel-Kaffee -, während-a-build-Auftritt.
Update:
JetBrain ist dotTrace war hervorragend (für diese Instanz), danke. Es hatte die perfekte Schnittstelle zum starten eines web-Projekts, und schnell hervorgehoben, dass wir die meiste Zeit im Application_Start() (in Global.asax).
Den anderen Optionen würde nicht abgeholt haben dieses oben, als:
-
Den Trace option beginnt erst ab
PreInit, fehlt die
Application_Start () - Aufruf. -
Den Stoppuhr Anrufe hätte
mir erforderlich zu wissen, wo Sie suchen, oder
wieder auf die guten alten Tage
printf-style-debugging... -
nprof will den Gegner ein .exe-Datei, die
würde der Zielbereich, wenn Sie versuchen zu befestigen, um die frische w3wp.exe Instanzen...
- Ich bin froh, dass es geklappt für Sie!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen profiler wie JetBrains dotTrace sollte Ihnen sagen, wo dein Flaschenhals ist... wenn Sie nichts sehen aus dem üblichen (ie. lange Bearbeitungszeiten für eine Methode), dann ist es nicht Ihre Anwendung. Es muss die Umwelt. Könnte es sein, wenn Sie Active Directory verwenden und den Aufruf von Active Directory hängen... gibt es eine web-service-Aufruf? Sie sind mit Team-Systeme?Gibt es postbuild-Prozesse?
Für mich klingt es wie etwas ist das timing. Das ist, warum Sie so lange warten.
Warum nicht ASP.NET -Trace-Funktionalität. Verwenden Sie trace.axd für die Analyse der Anforderungen.
Diese von nutzen sein könnten:
http://msdn.microsoft.com/en-us/library/ms972204.aspx
http://msdn.microsoft.com/en-us/library/wwh16c6c.aspx
In der Vergangenheit habe ich die ANTS performance profiler von redgate. Es ist wirklich gut, und es hat funktioniert für mich sehr gut. Ich weiß, dass nicht jeder will Geld ausgeben, um Geld in diese Art von tools, aber diese könnten es Wert sein. Überprüfen Sie es heraus, Sie haben eine Kostenlose 14 Tage-Testversion, die Sie verwenden können, in dieser website und finden Sie heraus, was genau das problem ist.
http://www.red-gate.com/products/ants_performance_profiler/index.htm
Glück!
Haben Sie versucht, die einfache Technik zu drehen, die Seite trace um zu sehen, ob es sagt Ihnen nichts? Die erste Zeile in Ihrer aspx-Seite wird wie folgt Aussehen:
wenn die Seite angezeigt wird in den browser, eine ganze Reihe von info wird auch an der Unterseite.
Profiling und tracing werden sowohl gute Empfehlungen.
Wenn du gehst, mit dem DateTime.Nun.ToString() Vorschlag, ich würde empfehlen, mit dem System.Diagnostik.StopWatch-Klasse statt. Es ist sehr einfach zu bedienen, und ich finde es um genauer zu sein.
Schreiben die Zeit in die log-Datei und überprüfen.