Hallo Leute
.
In der Hoffnung, dass sich hier im Forum MSSQL-Experten rumtreiben, wende ich mich an euch. [
Crosspost in der DelphiPraxis]
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.
Graphen aus Munin for Windows:
processor by day (leicht unterschiedliche Skalierung)
processor by month
Die Lastspitzen werden durch das zweimal wöchentliche Backup der MSSQL-DBs erzeugt.
Screenshots von ProcessHacker:
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