
Ich habe eine Umgebung, in der SQL Server auf einer Windows VMWare-Plattform ausgeführt wird, wobei ein SAN mit SSDs in RAID 6 verwendet wird, und ich verwende Veeam für Server-Backups und LiteSpeed für SQL Server-Backups.
Ich hatte im letzten Jahr mehrmals das Problem, dass die Datenbank manchmal sehr langsam läuft und meine durchschnittliche Festplattenwarteschlangenlänge hoch ist, aber meine Festplattenbytes/Sek. viel niedriger sind als sie sein sollten.
Hier ist der Leistungsmonitor auf dem Datenbankserver. Wenn dieses Problem auftritt, liegt die durchschnittliche Disk-Warteschlangenlänge immer im Bereich von mehreren Hundert und die Disk-Bytes/Sek. bleiben bei etwa 5-15 MB/Sek. Während des normalen Betriebs (wenn dieses Problem nicht auftritt) erreichen die Disk-Bytes/Sek. bis zu 900 MB/Sek.
Seitdem dieses Problem aufgetreten ist, habe ich die SAN-Hardware ausgetauscht – einschließlich der Switches. Aber das Problem besteht auf der neuen Hardware weiterhin.
Meine Theorie war, dass dies kein SQL Server-Problem ist, denn wenn das Problem darin bestünde, dass SQL Server die Festplatten-E/A überlastet, müsste ich viel höhere Festplattenbytes/s sehen. Aber wann immer dieses Problem auftritt, ist die Festplattenbytes/s immer sehr niedrig.
Ich dachte, es läge vielleicht an der Sicherungssoftware – die entweder auf dem Datenbankserver oder auf einem anderen Server läuft, der dieselbe VMWare/das gleiche SAN verwendet –, aber weder die Serversicherungen noch die SQL Server-Sicherungen schienen zu laufen, während dieses Problem auftrat.
Mein letzter Gedanke ist, dass dies ein Problem mit VMWare ist, aber ich habe sie kontaktiert und bisher konnten sie nicht helfen.
Ein Neustart des Datenbankservers behebt das Problem. Manchmal tritt das Problem innerhalb eines Tages erneut auf, und manchmal tritt es monatelang nicht wieder auf. Wann immer das Problem auftritt, ist mir nichts anderes als die normale Arbeitslast auf der Datenbank bewusst.
Was könnte die Ursache für dieses Problem sein, bei dem der Festplattendurchsatz auf etwa 1 % der Sollleistung sinkt?
Antwort1
Festplatten werden langsamer, je länger ihre Arbeitswarteschlange wird und umgekehrt – es gibt eine sehr begrenzte Anzahl von IOPS, die Sie ihnen zumuten können (ungefähr 40-200, je nach Klasse und RPM). Jede Steigerung der Anforderungen über diesen Punkt hinaus verringert ihre Leistung weiter.
Durch das Erstellen eines HDD-Arrays erhöht sich die Gesamtzahl der möglichen Lese-IOPS im Array, aber normalerweise weniger als die einfache Addition der einzelnen IOPS. Schreib-IOPS sind komplexer und hängen auch stark vom RAID-Level, Caching usw. ab.
Alles darüber hinaus erfordert SSDs und entsprechende Controller.
Antwort2
Da Sie bereits SSDs verwenden, vermute ich, dass ein ähnliches Problem wie das von mir aufgetretene auftreten könnte, bei dem TRIM in den SSDs nicht richtig verarbeitet wird. Das Löschen eines Datenblocks auf einer SSD erfolgt nicht sofort, die Vorbereitung eines Blocks zur Wiederverwendung kann ein langsamer Prozess sein und könnte die Ursache für die Verlangsamung sein – wenn Ihre freien und vorbereiteten Blöcke erschöpft sind, könnte das Array drastisch langsamer werden, während neue Blöcke vorbereitet werden. Überprüfen Sie, ob Ihr SAN erkennt, dass es sich um SSDs handelt, und ob TRIM im Hintergrund aktiviert ist.