Ich verwende eine Azure SQL-Datenbank unter der S2-Edition (50 DTUs). Die normale Nutzung des Servers hängt normalerweise bei 10% DTU. Dieser Server gerät jedoch regelmäßig in einen Zustand, in dem die DTU-Nutzung der Datenbank stundenlang an 85-90% gesendet wird. Dann geht es plötzlich wieder auf den normalen Verbrauch von 10% zurück.
Abfragen der Anwendung an den Server scheinen in diesem überlasteten Zustand immer noch schnell zu funktionieren.
Ich kann den Server von S2 => irgendetwas skalieren (z. B. S3) => S2 und es scheint zu löschen, in welchem Zustand er hängt. Einige Stunden später wiederholt er jedoch wieder denselben überlasteten Zustandszyklus. Eine andere seltsame Sache, die mir aufgefallen ist, ist, dass ich dieses Verhalten nicht beobachtet habe, wenn ich diesen Server rund um die Uhr auf einem S3-Plan (100 DTU) laufen lasse. Es scheint nur aufzutreten, wenn ich die Datenbank auf einen S2-Plan (50 DTU) verkleinert habe. Auf dem S3-Plan sitze ich immer bei 5-10% DTU-Auslastung. Offensichtlich nicht ausgelastet.
Ich habe in Azure SQL-Abfrageberichten nach unerwünschten Abfragen gesucht, sehe jedoch nichts Ungewöhnliches und zeige, dass meine Abfragen Ressourcen verwenden, wie ich es erwarten würde.
Wie wir hier sehen können, stammt die Verwendung ausschließlich von Data IO. Wenn ich den Leistungsbericht hier ändere, um die wichtigsten Daten-E / A-Abfragen von MAX anzuzeigen, sehen wir Folgendes:
Ein Blick auf diese lang anhaltenden Anforderungen scheint auf statistische Aktualisierungen hinzudeuten. Von meiner Anwendung läuft eigentlich nichts. Beispielsweise zeigt die Abfrage 16302 dort:
SELECT StatMan([SC0], [SC1], [SC2], [SB0000]) FROM (SELECT TOP 100 PERCENT [SC0], [SC1], [SC2], step_direction([SC0]) over (order by NULL) AS [SB0000] FROM (SELECT [UserId] AS [SC0], [OrganizationId] AS [SC1], [Id] AS [SC2] FROM [dbo].[Cipher] TABLESAMPLE SYSTEM (1.250395e+000 PERCENT) WITH (READUNCOMMITTED) ) AS _MS_UPDSTATS_TBL_HELPER ORDER BY [SC0], [SC1], [SC2], [SB0000] ) AS _MS_UPDSTATS_TBL OPTION (MAXDOP 16)
Andererseits zeigt der Bericht auch, dass diese Abfragen nur einen kleinen Prozentsatz der Daten-E / A-Nutzung auf dem Server verwenden (<4%). Im Rahmen der regelmäßigen Wartung führe ich wöchentlich Statistikaktualisierungen (und Indexwiederherstellungen) für die gesamte Datenbank durch.
In diesem weiteren Bericht werden MAX-Daten-E / A-Abfragen für einen Zeitraum angezeigt, der nur mehrere Stunden während des Vorfalls mit hoher Ressourcennutzung umfasst.
Wie wir sehen können, gibt es eigentlich keine Abfragen, die eine signifikante E / A-Nutzung von Daten melden.
Ich bin auch gelaufen sp_who2
und sp_whoisacive
in der Datenbank und sehe nicht wirklich, dass etwas auf mich herausspringt (obwohl ich zugeben werde, dass ich kein Experte mit diesen Tools bin).
Wie finde ich heraus, was hier los ist? Ich glaube nicht, dass eine meiner Anwendungsabfragen für diese Ressourcennutzung verantwortlich ist, und ich habe das Gefühl, dass im Hintergrund auf dem Server ein interner Prozess ausgeführt wird, der ihn beendet.