Einzelnen Beitrag anzeigen

Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#1

MSSQL-Server - Wie CPU-Last analysieren?

  Alt 26. Jul 2019, 17:15
Datenbank: MSSQL • Version: 2017 • Zugriff über: egal
Hallo Leute .

In diesem Thema geht es nicht um Programmierung mit MSSQL sondern um den MSSQL-Server selbst. Das Datenbank-Unterforum passt IMO trotzdem am besten; wenn nicht, dann bitte einfach verschieben.

Da ich weiß, dass einige Leute mit Datenbank-Erfahrung hier im Forum unterwegs sind - darunter bestimmt auch welche, die sich mit MSSQL auskennen, poste ich hier. [Crosspost bei Planet3DNow]

Vorab einige Infos zur Hard- und Software des fraglichen Systems:
AMD Epyc 7261
SuperMicro H11SSL-C
32 GiB RAM
Windows Server 2012 R2
MSSQL Server 2017 (mit CU12)
IIS
ERP-System, das auf Basis von .NET, IIS und MSSQL arbeitet
Hinweis: Das System hat bis auf zwei Domains keinen Internetzugang.

Das Problem stellt sich wie folgt dar: Nach ziemlich genau zwei Wochen Laufzeit des MSSQL-Servers verdoppelt sich die CPU-Last durch den SQL-Server-Prozess und das ändert sich auch mit längerer Laufzeit nicht mehr. Nun wäre ein möglicher Workaround, den MSSQL jedes Wochenende neu zu starten, aber ich würde gern versuchen, herauszufinden, was genau die CPU-Last verursacht.

[Hinweis: Bilder sind extern gelagert, weil DP nur 5 Dateien pro Post zulässt. Dummerweise werden offenbar auch IMG Tags weggefiltert, so dass es hier keine Thumbnails gibt.]
Graphen aus Munin for Windows:
processor by day (leicht unterschiedliche Skalierung)
Bild "processor-day_2019-075ok5v.png" anzeigen.
Bild "processor-day_2019-07h6j3t.png" anzeigen.
Bild "processor-day_2019-07qlk17.png" anzeigen.
processor by month
Bild "processor-month_2019-8kk1h.png" anzeigen.
Bild "processor-month_2019-mij5a.png" anzeigen.
Bild "processor-month_2019-ssksh.png" anzeigen.
Die Lastspitzen werden durch das zweimal wöchentliche Backup der MSSQL-DBs erzeugt.

Screenshots von ProcessHacker:
Bild "processhacker-generalepji2.png" anzeigen.
Bild "processhacker-performdwjny.png" anzeigen.
Bild "processhacker-statist6nkcm.png" anzeigen.
Bild "processhacker-threadsfsjrx.png" anzeigen.
Hier sieht man, dass sqlservr.exe permanent ~0,11% Last verursacht; aktuell sind es 0,15%. Nach einem Neustart des MSSQL ist dieser Wert - wie gesagt für zwei Wochen - irgendwo deutlich unter 0,05, IIRC meist 0,01%.
Außerdem ist ein hohes Cycles delta von ~40 Millionen für einen Thread erkennbar, bei einem Aktualisierungsintervall von 1 Sekunde; ich hab auch schon Cycles deltas von ~60 Millionen gesehen.

Der Aktivitätsmonitor im MSSQL Management Studio war keinerlei Hilfe, denn die sichtbaren lastverursachenden SQL-Statements waren nur die vom Aktivitätsmonitor selbst .

Nun könnte man natürlich sagen: "Was regt man sich über 1% CPU-Last auf", aber ich halte das Verhalten für nicht normal, wenn es zwei Wochen lang ohne diese Last funktioniert.

Gibt's unter den Lesern jemanden, der sich mit MSSQL auskennt und mir Tips geben kann, wie und wo man das anfangen kann zu analysieren?

Grüße
Dalai

Geändert von Dalai (26. Jul 2019 um 17:21 Uhr)
  Mit Zitat antworten Zitat