SQL Server 2008 R2 Hohe CPU

7

Wir haben eine SQL Server R2 Web Edition-Datenbank, die auf Windows Server 2008 R2 mit einer starken CPU und 32 GB RAM DDR3 basiert.

Unsere Datenbank arbeitet sehr hart (wir führen ungefähr 600.000 Abfragen in 1 Minute aus) und die CPU wird verrückt (25% bis 90%).

Ich habe mich um langsame Abfragen gekümmert, einige gefunden, behoben, andere habe ich gerade abgebrochen, um zu prüfen, ob es helfen wird, aber nicht, die CPU ist immer noch sehr hoch.

Ich habe mich gefragt, was es sonst noch sein könnte. Ich bin kein DBA, aber ich arbeite mit einem sehr erfahrenen, er erstellt alle Indizes und konfiguriert die DB neu, aber die CPU ist immer noch sehr hoch, und dieser DBA (mit mehr als 20 Jahren Erfahrung) ist eine Art hoffnungslos und weiß nicht wirklich, wie man das Problem findet.

Ich habe mich gefragt, ob es ein Caching-Problem sein könnte. so werden Abfragen nicht zwischengespeichert?

Weiß jemand was es sein kann? Was können wir machen? Wie können wir das untersuchen?

Vielleicht ist es nur die große Anzahl von Anfragen?

Ich würde gerne jede kleine Information bekommen, die Sie geben können!

m0fo
quelle
6
Warum ist eine hohe CPU für einen Server ungewöhnlich, der 10.000 Abfragen pro Sekunde ausführt?
usr
Ich habe keine Ahnung, ist es üblich? Ich bin kein DBA, wie gesagt. Wenn es die Anzahl der Abfragen ist, wenn ich unsere Datenbank aktualisiere, könnte es helfen? zu SQL Standard oder Enterprise
m0fo
Ich werde euch raten, zuerst die E / A während der Transaktion zu überprüfen, bevor ihr weiter geht.

Antworten:

8

Ich würde empfehlen, mit einer Methode wie Waits and Queues zu beginnen . Bei 10.000 Abfragen pro Sekunde sollten Sie jedoch damit rechnen, dass einige CPUs brennen. Ob es mehr ist als es sein sollte , ist wirklich schwer zu sagen, nur anhand der Informationen, die Sie gegeben haben. Die verknüpfte Methodik hilft Ihnen zumindest dabei, Engpässe zu finden.

Der größte Knall für das Geld wäre wahrscheinlich ... keine 10.000 Anfragen pro Sekunde zu senden. Cache im Client. Sehen Sie sich an, wie StackOverflow mit SQL Server skaliert, und sehen Sie, wie SE so viel wie möglich in der Webebene zwischenspeichert, bevor Sie den Server erreichen.

Machen Sie für alle Fälle ein paar DBCC SQLPERF ('SPINLOCKSTATS')und sehen Sie, ob etwas auffällt.

Remus Rusanu
quelle
2

Eine hohe CPU-Auslastung könnte eines der anderen Probleme sein:

  1. Wurde ein Index gelöscht (ohne Ihr Wissen)?
  2. Haben Sie überhaupt Indizes?
  3. Haben Sie kürzlich eine höhere Nutzung des Systems gesehen (mehr Benutzer / mehr Daten)?
  4. Wurde das System kürzlich neu gestartet (wodurch der Cache geleert und Neukompilierungen für Abfragen verursacht wurden)?
  5. Wurde eine Abfrage / gespeicherte Prozedur / Funktion geändert (wieder ohne Ihr Wissen)?

Ich würde diese Dinge überprüfen, bevor ich weiter gehe.

marc_s
quelle