Wir haben kürzlich unsere Tempdb-Dateien auf eine neue SSD aufgeteilt und sehen:
5348 Vorkommen von E / A-Anforderungen, deren Ausführung in Datei [T: \ tempdb \ tempdb4.ndf] länger als 15 Sekunden dauert.
Dieser Fehler tritt mehrfach auf. Wir haben die Fehler nicht gesehen, als tempdb wieder auf seinem ursprünglichen RAID 5-Home war. Ich habe ein Tutorial zu SQLIO befolgt und denke, dass die SSD beim zufälligen Lesen / Schreiben mit 8 KB viel schneller sein sollte als die vorherigen RAID 5-Festplatten. Warum sehen wir diese Fehler?
Um zu beweisen, dass nicht alles in Ordnung ist, dauert die Batch-Datei, die wir über Nacht ausführen (wenn diese Fehler auftreten), 7 Stunden. Auf den alten Festplatten dauerte es 6,25 Stunden.
Die Festplatten befinden sich in einem direkt angeschlossenen Array. Das RAID5 für Daten, RAID 10 für Protokolle und ein freier Steckplatz, den wir für die SSD verwendet haben. RAID 5 und SSD sind für eine Blockgröße von 64 KB formatiert. Das Protokoll ist falsch auf 4 KB Blockgröße eingestellt (ich weiß - wird behoben, wenn ich eine Chance bekomme).
Dies sind die Ergebnisse von SQLIO:
T-Laufwerk (ssd)
Ios = 8 KB zufälliges Schreiben, IOs / Sek. = 31847,48, MBs / Sek. = 248,8
Ios = 8 KB zufälliges Lesen, IOs / Sek. = 76391,66, MBs / Sek. = 596,8
S-Laufwerk (RAID 5)
Ios = 8 KB zufälliges Schreiben, IOs / Sek. = 2601,3, MBs / Sek. = 20,32
Ios = 8 KB zufälliges Lesen, IOs / Sek. = 3138,45, MBs / Sek. = 24,51
Bei sequenziellen 64K-Lese- / Schreibvorgängen waren sie ungefähr gleich.
Tempdb ist in 4 1,5-GB-Dateien aufgeteilt (dies ist vor und nach dem Umzug gleich).
SQL Server 2012 ist auf SP3 gepatcht.
Haben Sie eine Idee, was dazu führen kann, dass all diese E / A-Fehler von SQL Server gemeldet werden?
Handelt es sich möglicherweise um ein Array- oder HBA-Treiberproblem? Muss eine einzelne Festplatte, die einem freien Steckplatz in einem direkt angeschlossenen Array hinzugefügt wurde, im Hinblick auf den Cache sorgfältig konfiguriert werden?
quelle
Antworten:
Ich würde Ihnen dringend empfehlen, Ihr neues Laufwerk T: \ mit Crystal Disk Mark zu testen. Lesen Sie hier den Reiseführer von Brent Ozar:
So testen Sie Ihren Speicher mit CrystalDiskMark
Vergleichen Sie die Ergebnisse vom Laufwerk T: \ mit
Wenn die SSD langsamer als diese beiden anderen Geräte ist und sich in Ihrem Setup nichts anderes geändert hat *, liegt wahrscheinlich ein Problem mit der Festplatte selbst oder dem verwendeten Treiber oder dem Controller für das Array vor, in dem sich diese Festplatte befindet. usw.
* Dinge, die sich möglicherweise geändert haben, seit Sie tempdb verschoben haben:
Nächste Schritte
Da die Festplatte anscheinend relativ schnell ist (gemäß den von Ihnen freigegebenen Benchmarks), ist es meiner Meinung nach eine gute Idee, den Inhalt
sys.dm_io_virtual_file_stats
vor und nach dem von Ihnen erwähnten nächtlichen Stapeljob zu protokollieren . Hier erfahren Sie, wie viel E / A während dieses Vorgangs auf Tempdb ausgeführt wird. Dies ist wichtig, da möglicherweise wirklich mehr E / A vorhanden sind, als die Festplatte verarbeiten kann. Also, was Sie tun:Führen Sie diese Abfrage unmittelbar vor der geplanten Ausführung Ihres nächtlichen Stapeljobs aus:
Speichern Sie die Ergebnisse irgendwo (wie Excel oder so - wahrscheinlich nicht in tempdb: P)
Wir können dann die Differenz der beiden Snapshots nehmen und bestimmen, wie viele Bytes während des Jobs gelesen / geschrieben wurden. Sie können diese Zahlen auch verwenden, um die Gesamtlatenz während dieses Zeitraums zu berechnen.
Hinweis: Ein detaillierterer Ansatz besteht darin, die Ergebnisse dieser Abfrage alle 5 Minuten in einer Tabelle zu protokollieren (oder weniger, wenn Sie möchten).
quelle
Dieses Problem scheint nun behoben zu sein.
Ich habe das Problem bei unserem SAN-Team angesprochen und sie haben bestätigt, dass das Caching auf der SSD-Festplatte im Array deaktiviert ist. Sobald das Caching aktiviert war, verschwanden die Fehler aus dem SQL Server-Fehlerprotokoll.
Ich muss zugeben, dass ich nicht wusste, dass das RAID-Array diese zusätzlichen Einstellungen benötigt. Ich hatte erwartet, dass es ohne Intervention funktionieren würde.
Sie haben auch die Smart Array-Software aktualisiert und die neuesten Patches angewendet, was sie meiner Meinung nach sowieso hätten tun sollen und keinen DBA benötigt, um dies vorzuschlagen.
Vielen Dank an alle, die sich die Zeit genommen haben, dieses Problem mit mir zu besprechen.
Garrett
quelle