Wir bemerken ein interessantes Muster für HADR_SYNC_COMMIT
Wartezeiten in unserer Umgebung. Wir haben eine drei Replik; Eine primäre, eine synchrone sekundäre und eine asynchrone sekundäre in einem Rechenzentrum, und wir haben gerade drei weitere ASYNC- Replikate in einem anderen Rechenzentrum hinzugefügt (~ 2400 Meilen voneinander entfernt).
Seitdem stellen wir eine enorme Zunahme der HADR_SYNC_COMMIT
Wartezeiten fest. Wenn wir uns die aktiven Sitzungen ansehen, sehen wir eine Reihe von COMMIT TRANSACTION
Abfragen, die auf das SYNC-Replikat warten
Auf dem Screenshot können wir deutlich sehen, dass HADR_SYNC_COMMIT
am 29. Juni ein Wartesprung eintritt, und wir haben schließlich irgendwann am Mittag des 1. Juli 'zwei' der drei asynchronen Replikate im Remote-Rechenzentrum abgelegt. Das hat die Wartezeiten erheblich verkürzt.
Was wir bisher überprüft haben - Protokoll-Sendewarteschlange, Wiederherstellungswarteschlange, letzte gehärtete Zeit und letzte Festschreibungszeit auf den Remote-Replikaten. Wir haben während der Geschäftszeiten ununterbrochen kleine Transaktionen, und daher sind die Sendewarteschlangen zu einem bestimmten Zeitstempel (zwischen 60 KB und 1 MB) ziemlich klein.
Die Remote-Replikate sind fast synchron, es gibt kaum einen Unterschied zwischen der letzten Festschreibungszeit und der letzten gehärteten Zeit für eine einzelne LSN auf den Replikaten.
Die Netzwerk-Pipe ist 10G und wir haben die Sendepuffergröße von 256 Megabyte auf 2 GB geändert. Dies wurde unter der Annahme durchgeführt, dass das Netzwerk Pakete verworfen und erneut übertragen hat. So oder so schien das nicht viel zu helfen.
Ich frage mich also, was die ASYNC- Replikate mit HADR_SYNC_COMMIT
Wartezeiten zu tun haben . Sollte das SYNC- Replikat nicht allein von diesem Wartetyp abhängen, was fehlt mir hier?
quelle
Antworten:
Zunächst lautet die Beschreibung des Warteereignisses, auf das sich Ihre Frage bezieht:
Wenn Sie sich mit der Mechanik dieser Wartezeit befassen, werden die Protokollblöcke übertragen und gehärtet, aber die Wiederherstellung wird auf den Remoteservern nicht abgeschlossen. In diesem Fall und angesichts der Tatsache, dass Sie zusätzliche Replikate hinzugefügt haben, liegt es nahe, dass sich Ihr HADR_SYNC_COMMIT aufgrund des Anstiegs der Bandbreitenanforderungen erhöhen kann. In diesem Fall ist Aaron Bertrand in seinen Kommentaren zu der Frage genau richtig.
Quelle: http://blogs.msdn.com/b/psssql/archive/2013/04/26/alwayson-hadron-learning-series-hadr-sync-commit-vs-writelog-wait.aspx
Sehen Sie sich den zweiten Teil Ihrer Frage an, wie diese Wartezeit mit Anwendungsverlangsamungen zusammenhängen kann. Dies ist meines Erachtens ein Kausalitätsproblem. Sie sehen, wie Ihre Wartezeiten zunehmen und eine kürzlich erfolgte Benutzerbeschwerde vorliegt, und ziehen möglicherweise fälschlicherweise die Schlussfolgerung, dass die beiden eine Beziehung haben, wenn dies möglicherweise überhaupt nicht der Fall ist. Die Tatsache, dass Sie Tempdb-Dateien hinzugefügt haben und Ihre Anwendung schneller auf mich reagiert hat, weist darauf hin, dass möglicherweise einige zugrunde liegende Konfliktprobleme aufgetreten sind, die durch den zusätzlichen Overhead des impliziten Overheads der Snapshot-Isolationsstufe, wenn sich eine Datenbank in einer Verfügbarkeitsgruppe befindet, möglicherweise noch verstärkt wurden. Dies hat möglicherweise wenig oder gar nichts mit Ihren HADR_SYNC_COMMIT-Wartezeiten zu tun.
Wenn Sie dies testen möchten, können Sie eine erweiterte Ereignisablaufverfolgung verwenden, die das hadr_db_commit_mgr_update_harden XEvent auf Ihrem primären Replikat überprüft und eine Baseline abruft. Sobald Sie Ihre Baseline haben, können Sie Ihre Replikate einzeln wieder hinzufügen und sehen, wie sich der Trace ändert. Ich würde Ihnen dringend empfehlen, eine Datei zu verwenden, die sich auf einem Volume befindet, das keine Datenbanken enthält, und einen Rollover und eine maximale Größe festzulegen. Passen Sie den Dauerfilter nach Bedarf an, um Ereignisse zu erfassen, die mit Ihren Wartezeiten übereinstimmen, damit Sie weitere Fehler beheben und diese mit anderen beteiligten Teams korrelieren können.
quelle