HADR High Worker Thread-Nutzung

9

Warum würde die Anzahl der Arbeitsthreads einer Verfügbarkeitsgruppe in einem HADR-Pool weit über die Mindestverwendung von " Normalerweise gibt es 3 bis 10 gemeinsam genutzte Threads " pro Replikat hinaus ansteigen ?

In einem Fall haben wir die Verwendung von mehr als 300 Threads mit 3 Verfügbarkeitsgruppen und insgesamt 10 Datenbanken beobachtet. SQL Server 2014 SP1.

Unsere Leads sind Backups auf sekundären Replikaten, hohe Aktivität auf primären Replikaten und Berichte über sekundäre Replikate.

Die AGs befinden sich in einem Rechenzentrum auf VMware. Insgesamt 16 Scheduler, übliche Worker-Threads liegen unter 200. max_dop auf dem Server ist 2.

  • 3 AG, 10 DB, je 4 Replikate - primär, 2 schreibgeschützt, 1 nicht lesbar.
  • 1 sekundäre ist synchron, 2 asynchron
  • 16 vcores auf 32 physischen Kernen auf einem großen Multi-Host-Cluster.
  • Keine Überprovision.
  • Andere kleinere VMs mit 4 bis 8 Kernen sind kolokalisiert, drücken jedoch nicht auf die CPU

Wir haben einen Anstieg der Arbeitsthreads beobachtet, der zu Denial-of-Service führte. Die Zuordnung von Worker-Threads zu AG ist unsere Annahme, da nur diese Worker-Threads das Limit überschreiten können.

Die folgenden Links aus dem im Kontext gelesenen SQL Server Premier Field Engineer-Blog geben mir keine vollständige Antwort:

Alexander Tarasul
quelle
3
Können Sie Screenshot-Beispiele für das, was Sie sehen, veröffentlichen? Hier scheint etwas nicht zu stimmen, als würden Sie Worker-Threads im Allgemeinen abfragen, im Gegensatz zu den AG-Threads. (Und andere Arbeiter-Threads können auch das Limit überschreiten, nicht nur AG-Threads.)
Brent Ozar
Ich bin auf der Jagd nach einem ähnlichen Problem. Ich bin mir ziemlich sicher, dass ich es auf das MaxDop-Problem gebracht habe. Ich verwende Ola Hallengreens-Skripte für IndexMaintenance und die MaxDOP-Einstellung wurde auf NULL gesetzt. Der Punkt ist, könnten Sie Fragen haben, die Ihr MaxDOP 2 überschreiben?
Kasper Brandenburg
Hast du eine Lösung dafür bekommen?
Trusha

Antworten:

-1

Da sich Ihr DC auf einer VM befindet, besteht vermutlich eine schlechte Festplattenleistung. Eine schlechte Festplattenleistung kann zu langsameren Protokollschreibzeiten auf dem sekundären Replikat führen, was zu einer langsameren Bestätigung des sekundären Replikats zum primären Replikat führen kann (erschöpfende Arbeitsthreads).

Die Festplattenlatenz auf dem sekundären Replikat kann zu einer Erhöhung des HADR-Synchronisierungs-Commit-Prozesses führen, was dazu führt, dass der primäre Thread offene Threads hält, während er darauf wartet, dass der sekundäre die Transaktion bestätigt.

Überprüfen Sie das Fehlerprotokoll für Deadlocked Scheduler und erfassen Sie einige E / A-Metriken von PerfMon, um die Festplattenlatenz und die Länge der Festplattenwarteschlange zu ermitteln.

Rodrigo Nascentes
quelle