Announcement

Collapse
No announcement yet.

MSSQL Server 2005 bei bestimmter CPU Last loggen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MSSQL Server 2005 bei bestimmter CPU Last loggen

    Hallo,

    ich habe folgendes Problem: Ich habe hier einen MSSQL Server 2005 laufen und dazu eine .NET Multithreading-Anwendung die aus der DB Daten abfragt (jeweils mit eigenem Thread). In ziemlich unregelmäßigen und seltenen Fällen steigt die CPU Last des Servers durch mehrere Anfragen aus diversen Thread's (z.B. bei 3 Anfragen von 3 Systemen mit jeweils 6 Threads die die Datenbank nach diversen Daten anfragen) auf fast 100% und bleibt dort in einer endlosen Schleife hängen. Die Tabellen sind alle mit einem indiziertem Unique-Schlüssel versehen.

    Leider ist der Fehler nicht so im Code der Anwendung zu finden, wie ich dachte. Daher würde ich gerne irgendwie (z.B. mit dem Profiler) alle SQL Anfragen an die DB mitloggen, sobald die Serverlast über z.B. 85% steigt.
    Ich habe da eventuell an einen WindowsDienst gedacht, allerdings muss dieser irgendwie die gesamten SQL Abfragen dann auch lesen und loggen können.

    Gibt es da irgendwelche Möglichkeiten?

    Danke schonmal im vorraus.

  • #2
    Hallo,

    wie groß ist die Datenbankdatei - oder anders gefragt, passt die Datenbank vollständig in den RAM? Wenn mehrere Client in SELECTs sehr große Datenmengen abfragen und die Datenbank nicht vollständig in den Datenbankpuffer passt, muss der SQL Server die Datenbank ständig auslagern (d.h. alle Sessions schieben sich in den Zeitschlitzen der Threads gegenseitig aus dem RAM, was über einen langen Zeitraum zu einer sehr hohen CPU-Last führt).

    Ich würde zuerst über die Leistungsanzeige von Windows prüfen, ob diese Vermutung zutrifft. Dazu reichen die beiden folgenden Leistungsindikatoren aus:
    • SQL Server: Puffer-Manager - Puffercache-Trefferquote
    • Physikalischer Datenträger - Durchschnittliche Warteschlangenlänge des Datenträgers

    Comment

    Working...
    X