2009-05-18 5 views
-4

Ich habe eine Webanwendung, die von einer SQL Server-Datenbank unterstützt wird, die bis gestern funktionierte. Jetzt habe ich Leistungsprobleme mit dieser Anwendung. Woher weiß ich, ob es sich um ein Anwendungsproblem oder ein Datenbankproblem oder Hardwareproblem handelt?Ermittlung des Anwendungsproblems, Datenbankproblems oder Hardwareproblems?

Kann mir jemand helfen, mich Schritt für Schritt durch die grundlegende Fehlerbehebung zu führen, um herauszufinden, ob das Leistungsproblem mit der Anwendung, der Datenbank oder der Hardware zusammenhängt?

+0

Was ist Ihre Server-Side-Technologie, .NET? –

+4

viel zu weit reichend: "Ich habe Anwendung, die bis gestern gut funktioniert" ist keine echte Frage. –

+0

Viel zu vage - SQL Server? MySql? Internetanwendung? Eigenständige? .Netz? Java? PHP? Welche Fehlermeldungen erhalten Sie, wenn überhaupt? Was sind die "Leistungsprobleme?" Dropped Verbindungen? Langsame Ladezeiten? – matt

Antwort

1

Diese Frage weitere Fragen erfordern wird, bevor Sie in der Nähe der Diagnose des Problems bekommen:

Haben Sie den Quellcode? Wissen Sie, welche SQL-Anweisungen während der Zeit ausgeführt werden, in der die App Leistungsprobleme hat? Wenn dies der Fall ist, können Sie die SQL-Anweisungen direkt von einem SQL-Konsolenfenster aus für die Datenbank ausführen und sehen, ob das Leistungsproblem ausschließlich in der Datenbank liegt.

Haben Sie Zugriff auf die DB-Protokolle? Ich bin nicht vertraut mit SQL-Server-Logs, aber ich weiß, Oracle hat eine Menge von ihnen und sie sind voll von guten Sachen.

Angenommen, die Datenbank scheint zufriedenstellend zu reagieren, ist ein Netzwerk beteiligt? Ist das eine Webanwendung? Haben Sie Zugriff auf die Webprotokolle des Webservers?

Ist das Problem auf einen bestimmten Benutzerkreis beschränkt? Haben einige Benutzer das Problem und andere nicht?

+0

Danke für die Antwort ... es ist eine Webanwendung wie du gesagt hast Lass uns davon ausgehen, DB erscheint perfekt .... wie kann man daraus ein Netzwerkproblem schließen? Nehmen Sie an, alle Benutzer haben ein Problem ..... – Anoop

1

Profiler ausführen. Filtern Sie nach der Dauer, bei der der Wert> 50 ms ist, und Sie werden sehr wahrscheinlich die schlimmsten Übeltäter finden. Wenn es sich bei den Anweisungen um SELECT-Anweisungen handelt, kopieren Sie sie in den Abfrageanalysator, und führen Sie die Anzeige des tatsächlichen Ausführungsplans sowie die entsprechende Abstimmung aus (Indizes erstellen usw.).

+0

ok nach dem Ausführen des Profilers kam ich zu wissen, dass nur wenige gespeicherte Prozedur Zeit dauert. Gespeicherte Prozeduren bereits Indizes. Es gibt kein Problem mit Indizes ... was wird der nächste sein Schritt – Anoop

+0

Öffnen Sie die gespeicherten Prozeduren und prüfen Sie den Code. Schwer zu sagen, es könnte alles sein, von fehlenden Indizes von Tabellen bis hin zu Cursors, die lange dauern. Weg von den Cursorn wenn möglich. –

+0

Die Tabellen können Indizes haben, aber verwenden die Abfragen sie? Diese Serie gibt Ihnen vielleicht einen Platz zum Starten: http://www.simple-talk.com/sql/performance/finding-the-causes-of-poor-performance-in-sql-server,-part- 1/ http://www.simple-talk.com/sql/performance/finding-the-causes-of-poor-performance-in-sql-server,-part-2/ – GilaMonster

1

Erste Dinge zuerst ... definieren Sie eine Liste aller Änderungen, keine Änderung ist zu gering.

Sobald Sie diese Liste der Änderungen haben, starten Sie sie nacheinander.

Schritt für Schritt Details ehhh ... das ist eine schwierige Frage. Ich suche immer nach etwas Offensichtlichem. Wenn ich etwas sehe, das verdächtig aussieht, höre ich mit dem auf, was ich mache und forsche weiter, oder ich stelle es auf ein Whiteboard als mögliches Problem.

1) Wieder beginne ich immer damit, eine Liste von allem zu erstellen, was sich mit jedem Teil der Infrastruktur geändert hat (Firewall, Switch, DB, HotFix, Web Server, ...) Wenn sich etwas geändert hat, frage ich das immer habe mehr Informationen über diese Änderung. Meine Vermutung ist, dass Sie keine solchen Informationen haben, nicht, dass ich versuche, Sie in die Knie zu zwingen. Es dauert eine Weile, bis Organisationen den richtigen Reifegrad erreicht haben, um alle Änderungen zu erfassen.

2) Schauen Sie sich die Protokolle an. Da alle meine Anwendungen auf Windows Server sind, beginne ich mit dem Application Event Log. Ich suche nach Anwendungsfehlern. Als nächstes gehe ich zum System Event log, ich suche wieder nach Fehlern. Als nächstes kann ich eine Analyse auf meinen IIS-Protokollen machen .... Ich habe normalerweise das Zeitnahme-Feld in diesen Protokollen aktiviert, so dass ich mich auf lang laufende Anfragen konzentriere.

3) Als nächstes werde ich auf den DB-Server schauen. Ich werde meinen Datenbankadministrator bitten, SQL Profiler auszuführen, um zu sehen, welche Abfragen lange dauern. Ich werde auch fragen, dass sie Informationen über Datenbanksperren sammeln. Ich bitte sie auch, den Zustand von DB zu überprüfen (sind die Indizes aktuell, sind die Tabellen/Indizes fragmentiert).

4) Als nächstes sammle Windows Server Admins Leistungsindikatorstatistiken auf Web Server und SQL Server.Ich möchte nach Speicherlecks, IO-Queuing, CPU-Auslastung suchen.

+0

yeap, das ist der beste Ansatz wenn alles bis gestern gut funktioniert ... nicht nur Code, sondern HW, Verbindung, Nutzung, Service Packs, Infrastruktur, etc ... wie JD sagte, keine Änderung zu gering ... – opensas

+0

Vielen Dank für die Antwort .... aber ich brauche eine mehr explnation auf diese ... wenn du oben über Szenario gestolpert bist, wie löst du das probelm .... bitte erkläre mir Schritt für Schritt ... ich bin neu auf SQL Server, also ich nicht Ich weiß viel über Leistungsoptimierung – Anoop

0

Der erste Verdächtige ist eine Änderung im Code. Wenn etwas im Code passiert ist und das Leistungsproblem damit zusammenhängt, dann ist das der Hauptverdächtige.

Wenn sich nichts geändert hat, dann ist die Datenbank ein guter Verdächtiger. Unter der Annahme von Ihrem Tag, das Sie MS-SQL verwenden, gibt es zwei mögliche Szenarien:

  1. Die Daten ein bestimmtes Niveau treffen, wo der Motor den Algorithmus geändert verwendet, um die Abfragen ausführen, und diesen neuen Algorithmus erfordert unterschiedliche Indizierung.

  2. Die Indizes müssen einfach neu erstellt werden. Der Neuaufbau von Indizes ist ziemlich trivial, wie Sie von this link sehen können.

0

Benutzer sagen: es langsam
Chef sagen wird ausgeführt: fix it
Netzwerk Kerl sagen: Es ist ein Datenbankproblem
Datenbank Kerl sagen: es ist ein Anwendungsproblem
Anwendung Mann wird sagen: Es ist ein Netzwerkproblem

Verwandte Themen