S2エディション(50 DTU)でAzure SQLデータベースを実行しています。サーバーの通常の使用では、通常、約10%のDTUがハングします。ただし、このサーバーは定期的にデータベースのDTU使用率を85〜90%に数時間送信する状態になります。その後、突然、通常の10%の使用量に戻ります。
この過負荷状態の間、アプリケーションからのサーバーに対するクエリは、まだ高速に動作しているようです。
サーバーをS2 =>何からでもスケーリングできます(たとえば、S3)=> S2。サーバーがハングしている状態をすべてクリアするように見えます。しかし、数時間後、同じ過負荷状態のサイクルが繰り返されます。私が気付いたもう1つの奇妙なことは、このサーバーをS3プラン(100 DTU)で24時間年中無休で実行した場合、この動作は観察されなかったことです。データベースをS2プラン(50 DTU)にダウンスケールした場合にのみ発生するようです。S3プランでは、私は常に5-10%DTU使用率で座っています。明らかに十分に活用されていません。
不正なクエリを探してAzure SQLクエリレポートをチェックインしましたが、実際に異常なものは見られず、期待どおりにリソースを使用してクエリが表示されます。
ここでわかるように、使用法はすべてData IOからのものです。ここでパフォーマンスレポートを変更して、MAXごとの上位のデータIOクエリを表示すると、次のようになります。
これらの長期にわたる要求を見ると、統計の更新が指摘されているようです。私のアプリケーションから実際には何も実行されていません。たとえば、クエリ16302には次のように表示されます。
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)
ただし、この場合も、これらのクエリはサーバー上のデータIO使用率のごく一部(<4%)しか使用していないこともレポートに示しています。また、定期的なメンテナンスの一環として、統計情報の更新(およびインデックスの再構築)を毎週データベース全体で実行しています。
これは、リソース使用量の多いインシデントの間のみ数時間をカバーするタイムスパンのMAXデータIOクエリを示す別のレポートです。
ご覧のとおり、重要なデータIOの使用状況を報告するクエリは実際にはありません。
また、私は走っているsp_who2
と、sp_whoisacive
データベース上と(私はこれらのツールを持つ専門家ではないよ認めるでしょうが)本当に何が私に飛び出し表示されません。
ここで何が起こっているのかをどのように理解できますか?私のアプリケーションクエリのどれもがこのリソースの使用に責任があるとは思わず、サーバーのバックグラウンドで実行されている内部プロセスが強制終了しているように感じます。