Saya menjalankan database Azure SQL di bawah edisi S2 (50 DTU). Penggunaan normal server biasanya hang sekitar 10% DTU. Namun, server ini secara teratur masuk ke dalam kondisi di mana ia akan mengirim penggunaan database DTU ke 85-90% selama berjam-jam. Kemudian tiba-tiba kembali ke penggunaan normal 10%.
Permintaan terhadap server dari aplikasi sepertinya masih beroperasi dengan cepat selama keadaan kelebihan ini.
Saya dapat mengatur skala server dari S2 => apa saja (S3 misalnya) => S2 dan tampaknya menghapus status apa pun yang digunakan. Tetapi kemudian beberapa jam kemudian ia akan mengulangi siklus keadaan kelebihan beban yang sama. Hal aneh lain yang saya perhatikan adalah bahwa jika saya menjalankan server ini pada paket S3 (100 DTU) 24/7 saya belum mengamati perilaku ini. Tampaknya hanya terjadi ketika saya downscaled database ke paket S2 (50 DTU). Pada paket S3 saya selalu duduk di 5-10% penggunaan DTU. Jelas kurang dimanfaatkan.
Saya sudah memeriksa laporan kueri Azure SQL mencari kueri nakal, tapi saya tidak benar-benar melihat sesuatu yang tidak biasa dan itu menunjukkan kueri saya menggunakan sumber daya seperti yang saya harapkan.
Seperti yang bisa kita lihat di sini, penggunaannya semua berasal dari Data IO. Jika saya mengubah laporan kinerja di sini untuk menampilkan kueri IO Data atas dengan MAX, kami melihat ini:
Melihat quires yang berjalan lama ini sepertinya menunjuk ke pembaruan statistik. Tidak benar-benar sesuatu berjalan dari aplikasi saya. Misalnya, kueri 16302 di sana menunjukkan:
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)
Tetapi sekali lagi, laporan itu juga menunjukkan bahwa kueri ini hanya menggunakan sebagian kecil dari penggunaan Data IO di server (<4%). Saya juga menjalankan pembaruan statistik (dan indeks pembangunan kembali) di seluruh database setiap minggu sebagai bagian dari pemeliharaan rutinnya.
Berikut ini adalah laporan lain yang menunjukkan MAX IO data data untuk rentang waktu yang mencakup beberapa jam hanya selama insiden penggunaan sumber daya tinggi.
Seperti yang bisa kita lihat, sebenarnya tidak ada pertanyaan yang melaporkan penggunaan IO data yang signifikan.
Saya juga berlari sp_who2
dan sp_whoisacive
pada database dan tidak benar-benar melihat sesuatu melompat ke arah saya (meskipun saya akui saya bukan ahli dengan alat ini).
Bagaimana cara mengetahui apa yang terjadi di sini? Saya tidak berpikir salah satu permintaan aplikasi saya yang harus disalahkan untuk penggunaan sumber daya ini dan saya merasa bahwa ada beberapa proses internal yang berjalan di latar belakang pada server yang membunuhnya.