FlushCache-Nachrichten, die zu bestimmten Zeiten im Protokoll angezeigt werden


22

In letzter Zeit gab es viele Probleme mit der Datenbankleistung, und ich habe versucht herauszufinden, warum. Wir haben keinen DBA (ich bin ein Softwareentwickler), also fliege ich nur damit und vieles, was ich online finde, liest sich für mich wie eine Fremdsprache.

Wir haben SQL Server jeden Morgen neu gestartet, da dies die einzige Möglichkeit ist, während des Arbeitstages zu arbeiten. Mir ist aufgefallen, dass wir jeden Morgen gegen 5 Uhr morgens diese Meldung alle zwei Minuten im Protokoll abrufen:

FlushCache: 11848 Bufs mit 7432 Schreibvorgängen in 97168 ms (vermieden 8139 neue Dirty Bufs) für DB 9: 0 aufgeräumt

letztes ausstehendes Ziel: 4, avgWriteLatency 32

Durchschnittlicher Durchsatz: 0,72 MB / s, E / A-Sättigung: 11635, Kontextwechsel 18849

Die Nummern unterscheiden sich natürlich jedes Mal, aber es wird immer wieder dieselbe Meldung in diesem Muster angezeigt, bis ich den Server neu starte. Ich bin mir nicht sicher, wie ich das interpretieren soll. Ich habe versucht, Google darüber zu informieren, und alles, was ich zusammengetragen habe, ist, dass dies bedeutet, dass mit I / O möglicherweise etwas nicht stimmt und dass etwas länger dauert, als es soll. Wir haben kürzlich auf SSD umgestellt, sodass ich nicht dachte, dass dies ein Schreibproblem sein sollte.

Könnte jemand etwas Licht ins Dunkel bringen?


Antworten:


29

Die FlushCache-Meldung im Fehlerprotokoll wird durch die Checkpoint-Protokollierung und in diesem Fall durch einen langen Checkpoint (der als Checkpoint definiert ist, der länger als das Wiederherstellungsintervall dauert) verursacht. Unabhängig davon, ob protokolliert oder nicht, ist das Verhalten in den Jahren vor 2012 und 2012+ unterschiedlich. Vor SQL Server 2012 müssen Sie ein Ablaufverfolgungsflag (T3504) aktivieren, um die Checkpoint-Protokollierung zu erhalten. Ab SQL Server 2012 wird diese Nachricht jedoch standardmäßig protokolliert, wenn ein langer Prüfpunkt auftritt.

Nun zur Frage "Ist das wirklich schlimm ?" , Sie müssen wirklich anfangen, diese Zahlen in Anbetracht ihres Kontexts zu betrachten. Sie haben mehr als 97 Sekunden gebraucht, um nur 93 MB verschmutzter Puffer zu leeren. Dies scheint möglicherweise eine Mischung aus vielen Datenabwanderungen (während des eigentlichen Checkpoints waren auch Puffer im Wert von 64 MB verschmutzt) und potenziellem Speicher zu sein, der mit den Datenänderungen und / oder dem Rest nicht Schritt hält der I / O-Auslastung.

Was ich tun würde, ist die Integrität Ihres Speichersubsystems zu überprüfen, die Wartezeiten zu betrachten und nur ein Gesamtbild der Leistung der Instanz zu erhalten. Sehen Sie sich die Leistungsindikatoren für logische Datenträger an und sehen Sie, wie hoch die gesamte E / A-Abwanderung mit Durchsatz , Latenz und IOps ist . Auf diese Weise können Sie ein lebendigeres Bild der Leistung der Datenträger zeichnen. Wenn Sie in der Lage sind, einen Benchmark für Ihren Speicher durchzuführen , sollten Sie prüfen, wozu diese Volumes in der Lage sind ( SQLIO ist ein großartiges Dienstprogramm dafür) und was sie gerade tun (das ist nett zu) eine Benchmark-Basislinie haben, als die Volumina im Vergleich zu einer aktuellen Benchmark hochgerechnet wurden).

Hier ist ein großartiger Artikel, der diese Meldung erklärt - So funktioniert es: Wann wird die FlushCache-Meldung zum SQL Server-Fehlerprotokoll hinzugefügt?

EDIT : Re-Lektüre Ihrer Frage, ich must've diesen Kommentar verpasst:

Mir ist aufgefallen, dass wir jeden Morgen gegen 5 Uhr morgens diese Nachricht erhalten

Sehen Sie sich an, was zu diesem Zeitpunkt in Ihrem Speicher geschieht, wie oben beschrieben. Das klingt wie eine planmäßige Schulbuchoperation, die den Speicher belastet und die Leistung des Prüfpunkts beeinträchtigt und "lang" ist.


2
SQLIO wurde von Diskspd.exe gemäß dem angegebenen Link abgelöst. Hier ist der Link zu Diskspd.exe: gallery.technet.microsoft.com/DiskSpd-a-robust-storage-6cd2f223
Tim Coker
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.