Bagaimana cara mengidentifikasi penyebab 100% penggunaan CPU di Azure App Service?

12

Saya memiliki lima aplikasi dalam Paket Layanan Aplikasi Azure, semua salinan berbeda dari aplikasi yang sama untuk klien yang berbeda. Ini adalah aplikasi ASP.NET MVC dengan database SQL.

Pagi ini saya bangun ke situs lambat dan non-responsif, kadang-kadang menghasilkan kesalahan 503. Setelah memeriksa metrik CPU / Memori untuk Paket Layanan Aplikasi, saya menemukan CPU dipatok pada 100%:

CPU pada 100%

Dan grafik waktu CPU masing-masing situs menunjukkan semuanya mati secara bersamaan, meskipun beberapa lebih buruk daripada yang lain:

Penggunaan CPU pada masing-masing situs

Saya mencoba menyelesaikan masalah dengan melakukan Restart Aplikasi Lanjutan, tetapi blade tidak mau memuat - saya berasumsi karena mencoba mendapatkan informasi dari server yang tidak bisa merespons.

Pada akhirnya saya mencoba menghentikan masing-masing situs satu per satu, yang membawa CPU kembali ke nol, kemudian memulai kembali, yang tampaknya telah menyelesaikan masalah, tetapi sekarang beberapa dari mereka mulai naik kembali.

Saya mengalami masalah yang sama beberapa minggu yang lalu dan menganggap saya tumbuh terlalu besar untuk Rencana Aplikasi saya, jadi ditingkatkan dari S1 ke S2 ​​dan itu baik-baik saja sampai hari ini.

Saya benar-benar bingung bagaimana mencari tahu apa penyebab perilaku lapar CPU ini. Adakah yang bisa mengarahkan saya ke arah yang benar tentang bagaimana saya bisa mulai mendiagnosis ini?

littlecharva
sumber
ini tampaknya terjadi pada paket layanan aplikasi Azure sedikit, sudahkah Anda menghubungi MS? - kecuali jika Anda telah membuat perubahan, saya akan memberi tahu mereka ada masalah dengan platform.
Sum1sAdmin
Saya tidak punya rencana dukungan dengan mereka, jadi jangan berpikir ada cara untuk memberi tahu mereka. Itu sedikit khawatir jika saya hanya akan mengalami masalah CPU 100% secara acak - mungkin harus mencari pemasok lain. Apakah memiliki dua contoh membantu menurut Anda?
littlecharva
Saya akan menggunakan forum terbuka seperti technet - Jika ini penting Anda dapat meningkatkannya tapi saya tidak akan membayar lebih untuk sesuatu yang mereka perlu perbaiki, jika itu masalahnya.
Sum1sAdmin

Jawaban:

6

Kami telah mengalami masalah ini beberapa kali dan setiap kali ternyata melarikan diri GC (pengumpulan sampah). Sulit untuk membuktikan dan mendiagnosis, tetapi yang akhirnya saya lakukan adalah menggunakan situs kudo (scm), mengklik alat => dukungan (yang membawa Anda ke situs dukungan untuk aplikasi.

Dari sini Anda memilih direktori Anda (jika Anda memiliki beberapa) dan situs, klik pada Analyze => Metrics kemudian tombol Diagnose ( CATATAN ini sudah berubah sehingga langkah-langkah ini dapat berubah setiap saat), lalu kembali pada Analyze => Dianotics, Anda Akhirnya akan mendapatkan laporan Memory Dump => "Status analisis". Ini harus berupa file mht (yang dapat Anda buka di browser yang penuh kebencian, IE atau Edge), lalu cari kunci "gc".

Anda akan menemukan beberapa frame stack panggilan yang menarik dengan referensi ke hal-hal seperti "GCFrame" atau lebih menarik lagi panggilan ke "System.Threading.WaitHandle.WaitMultiple" jika Anda mendapatkan terlalu banyak dari ini, sistem Anda mungkin mengalami masalah dengan pengumpulan sampah .

Bagaimana mengatasinya ... itu topik yang dibahas di banyak utas lainnya karena seperti bertanya "bagaimana saya hidup di dunia dengan IE 6 yang masih digunakan?" ...

cdmdotnet
sumber
1
Ini sudah pindah. Sekarang terletak di Layanan Aplikasi (bukan situs scm, situs Azure biasa) di "Diagnosis dan Selesaikan Masalah-> Alat Diagnostik-> Kumpulkan Memory Dump"
Josh Noe
3

Taruhan terbaik Anda akan menginstal Relic Baru atau Wawasan Aplikasi untuk aplikasi khusus ini. Itu dapat dengan mudah diinstal melalui Layanan Aplikasi -> Alat -> Pemantauan Kinerja. Ini akan memberi Anda pandangan rinci tentang apa yang terjadi di sisi server dan klien.

Pemantauan Aplikasi

Artikel: Memantau kinerja aplikasi web Azure

Bruno Faria
sumber