Sehr hohe Transaktionen pro Sekunde

8

Unser Produktionsserver führt durchschnittlich 4.000 Transaktionen pro Sekunde aus. In den letzten Tagen ist der Durchschnitt auf 175.000 Transaktionen pro Sekunde gestiegen. Das ist kein Tippfehler, es sind 175K pro Sekunde.
Wenn wir uns die DMVs für Transaktionen ansehen, können wir sie nicht direkt mit Benutzersitzungen verknüpfen, aber wir sehen Folgendes:

SELECT NAME,
       COUNT(*)
FROM   sys.dm_tran_active_transactions
GROUP  BY NAME
ORDER  BY 2 DESC 

- -

+------------------------------+-------+
|             Name             | Count |
+------------------------------+-------+
| WorkFileGroup_fake_worktable |   627 |
| LobStorageProviderSession    |   217 |
| workfile                     |   171 |
+------------------------------+-------+

Kann jemand Licht in diese Art von Transaktionen bringen? Oder jage ich hier Geister?

Paulbarbin
quelle
Möglicherweise können Sie den Server profilieren, indem Sie sp_whoisactive wiederholt ausführen. Welche Fragen tauchen am häufigsten auf?
usr
Wahrscheinlich nicht klar, aber im Originaltext habe ich festgestellt, dass es keine Korrelation zwischen Benutzerprozessen und Transaktionen gibt. Normalerweise haben wir ungefähr 4000 verbundene Benutzer und zu einem bestimmten Zeitpunkt sind zwischen 40 und 60 von ihnen lauffähige Spids. Während dieser aufgeblasenen Transaktionsperiode gab es immer noch 40-60 lauffähige Spids - kein Unterschied.
Paulbarbin
Update: Das tps ist wieder auf dem normalen Wert und wir sehen keinen wirklichen Grund dafür. Das einzige, was Sinn macht, ist, dass eine Verbindungsserverabfrage ausgeführt wurde, bei der es so aussah, als würde die gesamte Tabelle über die Leitung in die Tempdb gezogen. Dieser Prozess dauerte viel länger als gewöhnlich. Ist es möglich, dass die tps wie 1 Zeile in der Tabelle = 1 Transaktion gezählt wurden? Die Tabelle enthält 50.000 Zeilen und wird von den Benutzern adhoc ausgeführt. Daher wird sie dreimal pro Sekunde aufgerufen und das KÖNNTE sich summieren, aber es scheint nicht wahrscheinlich.
Paulbarbin
2
Wenn es mein Server wäre, würde ich eine schnelle serverseitige Ablaufverfolgung ausführen. Vielleicht nur eine 5-minütige Spur, um zu sehen, ob es eine Chance gibt, dass die tps-Anzahl falsch ist. Ich würde definitiv sp_whoisactive als Spam versenden, um auch Anfragen während des Fluges zu beobachten.
Peter

Antworten:

1

Achten Sie wieder auf die hohe Aktivität; Wenn Sie es sehen, starten Sie eine serverseitige Ablaufverfolgung oder verwenden Sie bei Bedarf kurz Profiler, um zu sehen, was los ist.

Verwenden Sie alternativ einen Paket-Sniffer wie Wireshark, um die Rohdrahtaktivität zu erfassen.

Überprüfen Sie dm_exec_cached_plans , um festzustellen , ob dies eine Vorstellung davon gibt, was los ist.

Sehen Sie sich dm_io_virtual_file_stats an, um zu sehen, welche Dateien, falls vorhanden, betroffen sind.

Anti-Schwachkennwörter
quelle