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