2009-05-14 14 views
0

Ich habe eine in ASP.NET 2.0 geschriebene Anwendung in Produktion implementiert und es treten einige Latenzprobleme auf. Die Seiten benötigen ca. 4-5 Sekunden zum Laden. Die GridView-Aktualisierung dauert ungefähr zum gleichen Zeitpunkt.ASP.NET Application Deployment Problem

Die App läuft gut auf der Entwicklungs-Box. Ich habe die folgende Untersuchung auf dem Server

  1. überprüft den verfügbaren Speicher ... 80% verwendet.
  2. den Prozessor ... 1%
  3. Auf Disk IO von perfmon, weniger als 15%

Die Serverkonfiguration

Windows Server 2003 SP2 Dual-2.0 GZH 2GB RAM ist

Cheched

Nur SQL Server 2005 und IIS ausführen

Gibt es noch etwas, das ich beheben kann? Ich habe auch das Ereignisprotokoll auf Fehler überprüft, es ist sauber.

EDITED ~ Der einzige Unterschied, den ich gerade aufgegriffen habe, ist auf der DEV-Box Ich verwende IE7 und die Clients verwenden IE6 - Könnte das ein Problem sein?

UPDATE ~ Ich aktualisierte alle Clients auf IE8 und bemerkte eine 30% ige Steigerung der Leistung. Ich habe schließlich herausgefunden, dass ich mein debug = true in der Datei web.config gelassen habe. Das zu setzen, hat die App wieder auf die stabile Performance gebracht ... Ich kann immer noch nicht glauben, dass ich das getan habe.

+0

Läuft es in einem eigenen App-Pool? Wie lauten die anderen Konfigurationseinstellungen auf dem Prod-Server? –

+0

Ich habe einen separaten App-Pool mit Standardkonfiguration erstellt. –

+0

IE6 könnte länger dauern, um zu laden, wenn Sie irgendeine Art von Reparatur für PNG-Datei Alpha-Transparenz tun. Bist du? –

Antwort

1

Überprüfen Sie, ob Ihre Anwendung nicht im Debug-Modus läuft. Überprüfen Sie in Ihrer Datei web.config, ob das Attribut debug unter system.web\compilation auf false gesetzt ist.

Abgesehen davon, dass die Anwendung langsamer ausgeführt wird und mehr Systemspeicher verwendet wird, kommt es auch zu einem langsamen Laden der Seite, da im Debug-Modus die Zwischenspeicherung zwischengespeichert wird.

+0

Das war genau meine verdammte Aufsicht! Ich kann nicht glauben, dass ich so einen dummen Fehler gemacht habe, ernsthaft! –

0

Laufen Sie gegen den gleichen SQL Server wie in Ihren Tests oder einen anderen?

Um herauszufinden, wo die Zeit von Ihnen kommt, könnten Sie einige Trace-Anweisungen zum Laden Ihrer Seite hinzufügen und dann die Seite mit aktivierter Ablaufverfolgung laden. Das könnte helfen, auf das Problem hinzuweisen.

Auch was sind die Spezifikationen Ihrer Entwicklungsbox? Das Gleiche?

+0

Kein anderer Datenbankserver. Ich habe die Datenbank von der Entwicklung in die Produktion kopiert. Die Spezifikationen sind fast gleich, 1 GB mehr RAM auf der Entwicklungsbox. –

+0

Bedeutet das, dass Sie eine Produktions-Sql-Box mit nur 1 GB RAM haben? – NotMe

1

Überprüfen Sie auch Ihre Seitengröße. Ein befreundeter Entwickler hat einmal eine ganze Tabelle in den Viewstate geladen. Eine 12-Megabyte-Seite wird bei der Entwicklung auf Ihrem lokalen Rechner vorbeiziehen, wird aber in der Produktion sofort spürbar.

+0

Wie überprüfe ich das? –

+0

Herunterladen Firebug UND YSlow (in dieser Reihenfolge, nur firefox). YSlow gibt Ihnen eine vollständige Analyse Ihrer Seite. –

2

Als erstes würde ich Tracing aktivieren. (Siehe: http://www.4guysfromrolla.com/webtech/081501-1.shtml)

fügen Sie dann Punkte auf Ihrer Seite Generation Code Tracing Sie eine Vorstellung davon zu geben, wie lange jeder Teil der Seite Build nimmt:

System.Diagnostics.Trace.Write(
       "Starting Page init", 
       "TraceCheck"); 
//Init page 

System.Diagnostics.Trace.Write(
       "End Page init", 
       "TraceCheck"); 

System.Diagnostics.Trace.Write(
       "Starting Data Fetch", 
       "TraceCheck"); 
//Get Data 

System.Diagnostics.Trace.Write(
       "End Data Fetch", 
       "TraceCheck"); 

etc

diese Weise können Sie Sehen Sie genau, wie lange jede Phase dauert und zielen Sie dann auf diesen Bereich.

+0

Danke. Ich gebe das eine Chance. –

0

Je nachdem, welche Version von Visual Studio Sie haben, enthält Team Developer einen Performance-Assistenten, den Sie untersuchen möchten.

Auch wenn Sie IE 8 verwenden, hat es einen Profiler, mit dem Sie sehen können, wie lange die Website dauert, um im Browser selbst zu laden. Eines der ersten Dinge zu bestimmen ist, ob die Zeit Client-Seite oder Server-Seite ist.

Wenn Client-Seite, schauen Sie, was Javascript Sie haben und optimieren/loswerden.

Wenn Server-Seite, müssen Sie alle Leistungsindikatoren (Perfmon) betrachten. Zum Beispiel hatten wir eine App, die auf den Produktionsservern aufgrund einer enormen Menge an JIT gecrawlt wurde.

Sie müssen auch die Kommunikation zwischen dem Web und dem Datenbankserver überprüfen. Wie lange dauert die Abfrage? Werden die Festplatten von den Boxen geplättet? etc.

Verwandte Themen