Memecahkan masalah performa aplikasi web yang lambat di Azure App Service

Artikel ini membantu Anda untuk memecahkan masalah performa aplikasi yang lambat di Azure App Service.

Jika Anda memerlukan bantuan lebih lanjut terkait hal apa pun dalam artikel ini, Anda dapat menghubungi pakar Azure di forum MSDN Azure dan Stack Overflow. Sebagai alternatif, Anda juga dapat mengajukan insiden dukungan Azure. Buka situs Dukungan Azure dan pilih Dapatkan Dukungan.

Gejala

Saat Anda menelusuri aplikasi, halaman dimuat secara perlahan dan terkadang waktunya habis.

Penyebab

Masalah ini sering diakibatkan masalah tingkat aplikasi, seperti:

  • permintaan jaringan membutuhkan waktu yang lama
  • kode aplikasi atau kueri database yang tidak efisien
  • aplikasi yang menggunakan memori/CPU tinggi
  • aplikasi mengalami crash karena adanya pengecualian

Langkah-langkah pemecahan masalah

Pemecahan masalah dapat dibagi menjadi tiga tugas berbeda, secara berurutan:

  1. Mengamati dan memantau perilaku aplikasi
  2. Mengumpulkan data
  3. Memitigasi masalah

Azure App Service memberi Anda berbagai opsi di setiap langkah.

1. Mengamati dan memantau perilaku aplikasi

Melacak kesehatan layanan

Microsoft Azure akan melakukan penerbitan setiap kali ada gangguan layanan atau penurunan performa. Anda dapat melacak kesehatan layanan di portal Microsoft Azure. Untuk informasi selanjutnya, lihatMelacak kesehatan layanan.

Memantau aplikasi Anda

Opsi ini memungkinkan Anda mencari tahu apakah aplikasi Anda mengalami masalah. Di bilah aplikasi Anda, klik petak Permintaan dan kesalahan. Bilah Metrik akan menampilkan semua metrik yang dapat Anda tambahkan.

Beberapa metrik yang mungkin ingin Anda pantau untuk aplikasi Anda adalah

  • Set memori aktif rata-rata
  • Waktu respons rata-rata
  • Waktu CPU
  • Set memori aktif
  • Permintaan

monitor app performance

Untuk mengetahui informasi selengkapnya, lihat:

Memantau status titik akhir web

Jika Anda menjalankan aplikasi Anda di tingkat harga Standar, App Service memungkinkan Anda untuk memantau dua titik akhir dari tiga lokasi geografis.

Pemantauan titik akhir mengonfigurasi pengujian web dari lokasi yang terdistribusi secara geografis yang menguji waktu respons dan waktu aktif URL web. Pengujian melakukan operasi HTTP GET pada URL web untuk menentukan waktu respons dan waktu aktif dari setiap lokasi. Setiap lokasi yang dikonfigurasi akan menjalankan pengujian setiap lima menit.

Waktu aktif dipantau menggunakan kode respons HTTP, dan waktu respons diukur dalam milidetik. Pengujian pemantauan gagal jika kode respons HTTP lebih besar dari atau sama dengan 400 atau jika respons membutuhkan waktu lebih dari 30 detik. Sebuah titik akhir dianggap tersedia jika pengujian pemantauannya berhasil dari semua lokasi yang ditentukan.

Untuk menyiapkannya, lihat Memantau aplikasi di Azure App Service.

Selain itu, lihat Menjaga Situs Web Azure tetap aktif ditambah Pemantauan Endpoint - dengan Stefan Schackow untuk video tentang pemantauan titik akhir.

Pemantauan performa aplikasi menggunakan Ekstensi

Anda juga dapat memantau performa aplikasi Anda dengan menggunakan ekstensi situs.

Setiap aplikasi App Service menyediakan titik akhir manajemen yang dapat diperluas yang memungkinkan Anda untuk menggunakan seperangkat alat yang canggih yang disebarkan sebagai ekstensi situs. Ekstensi tersebut meliputi:

  • Penyunting kode sumber seperti Azure DevOps.
  • Alat manajemen untuk sumber daya yang tersambung seperti database MySQL yang tersambung ke sebuah aplikasi.

Azure Application Insights adalah ekstensi situs pemantauan performa yang juga tersedia. Untuk menggunakan Application Insights, Anda dapat membangun ulang kode dengan SDK. Anda juga dapat memasang ekstensi yang menyediakan akses ke data tambahan. SDK memungkinkan Anda menulis kode untuk memantau penggunaan dan performa aplikasi Anda secara lebih terperinci. Untuk mengetahui informasi lebih lanjut, lihat Memantau performa di aplikasi web.

2. Mengumpulkan data

App Service menyediakan fungsionalitas diagnostik untuk pengelogan informasi dari server web dan aplikasi web. Informasi ini dipisahkan menjadi diagnostik server web dan diagnostik aplikasi.

Mengaktifkan diagnostik server web

Anda dapat mengaktifkan atau menonaktifkan jenis log berikut:

  • Pengelogan Kesalahan Terperinci - Informasi kesalahan terperinci untuk kode status HTTP yang menunjukkan kegagalan (kode status 400 atau yang lebih besar). Jenis log ini mungkin dapat berisi informasi yang dapat membantu untuk menentukan alasan dibalik server yang menampilkan kode galat.
  • Pelacakan Permintaan Gagal - Informasi terperinci tentang permintaan yang gagal, termasuk jejak komponen IIS yang digunakan untuk memproses permintaan dan waktu yang dihabiskan di setiap komponen. Jenis log ini dapat berguna jika Anda mencoba meningkatkan performa aplikasi atau mengisolasi apa yang menyebabkan kesalahan HTTP tertentu.
  • Pengelogan Server Web - Informasi tentang transaksi HTTP menggunakan format file log yang diperluas W3C. Jenis log ini berguna saat menentukan metrik aplikasi secara keseluruhan, seperti jumlah permintaan yang ditangani atau seberapa banyaknya permintaan dari alamat IP tertentu.

Mengaktifkan diagnostik aplikasi

Ada beberapa opsi untuk mengumpulkan data performa aplikasi dari App Service, membuat profil aplikasi Anda secara langsung dari Visual Studio, atau memodifikasi kode aplikasi Anda untuk mencatat lebih banyak informasi dan jejak. Anda dapat memilih opsi berdasarkan pada jumlah akses yang Anda miliki ke aplikasi dan apa yang Anda amati dari alat pemantauan.

Menggunakan Application Insights Profiler

Anda dapat mengaktifkan Application Insights Profiler untuk mulai mengambil jejak performa yang terperinci. Anda dapat mengakses jejak yang diambil hingga lima hari sebelumnya saat Anda perlu menyelidiki masalah yang terjadi di masa lalu. Anda dapat memilih opsi ini selama Anda memiliki akses ke sumber daya Application Insights aplikasi di portal Microsoft Azure.

Application Insights Profiler menyediakan statistik tentang waktu respons untuk setiap panggilan web dan jejak yang menunjukkan baris kode mana yang menyebabkan respons menjadi lambat. Terkadang aplikasi App Service menjadi lambat karena kode tertentu tidak ditulis dengan cara yang optimal. Contohnya termasuk kode berurutan yang dapat dijalankan secara paralel dan ketidakcocokan kunci database yang tidak diinginkan. Menghapus penyempitan dalam kode tersebut akan meningkatkan performa aplikasi, tetapi sulit dideteksi tanpa menyiapkan jejak dan log yang rumit. Jejak yang dikumpulkan oleh Application Insights Profiler membantu mengidentifikasi baris kode yang memperlambat aplikasi dan mengatasi masalah ini untuk aplikasi App Service.

Untuk mengetahui informasi lebih lanjut, lihat Membuat profil aplikasi langsung di Azure App Service dengan Application Insights.

Menggunakan Remote Profiling

Di Azure App Service, aplikasi web, aplikasi API, back end seluler, dan WebJobs dapat dibuatkan profilnya dari jarak jauh. Pilih opsi ini jika Anda memiliki akses ke sumber daya aplikasi dan Anda tahu cara menghasilkan masalah kembali, atau jika Anda mengetahui interval waktu yang tepat saat masalah performa terjadi.

Remote Profiling berguna jika penggunaan CPU dari proses tinggi dan proses Anda berjalan lebih lambat dari yang diharapkan, atau latensi permintaan HTTP lebih tinggi dari biasanya. Anda dapat membuat profil proses Anda dari jarak jauh dan mendapatkan tumpukan panggilan pengambilan sampel CPU untuk menganalisis aktivitas proses dan jalur panas kode.

Untuk mengetahui informasi lebih lanjut, lihat Dukungan Remote Profiling di Azure App Service.

Menyiapkan jejak diagnostik secara manual

Jika Anda memiliki akses ke kode sumber aplikasi web, diagnostik Aplikasi memungkinkan Anda untuk mengambil informasi yang dihasilkan oleh aplikasi web. Aplikasi ASP.NET dapat menggunakan kelas System.Diagnostics.Trace untuk mencatat informasi ke log diagnostik aplikasi. Namun, Anda perlu mengubah kode dan menyebarkan aplikasi Anda kembali. Metode ini disarankan jika aplikasi Anda sedang berjalan di lingkungan pengujian.

Untuk instruksi terperinci tentang cara mengonfigurasi aplikasi Anda untuk pengelogan, lihat Mengaktifkan pengelogan diagnostik untuk aplikasi di Azure App Service.

Menggunakan alat diagnostik

App Service memberikan pengalaman yang cerdas dan interaktif untuk membantu Anda memecahkan masalah aplikasi tanpa memerlukan konfigurasi. Saat Anda mengalami masalah dengan aplikasi Anda, alat diagnostik akan menunjukkan apa yang salah untuk memandu Anda ke informasi yang tepat demi memecahkan dan menyelesaikan masalah dengan lebih mudah dan cepat.

Untuk mengakses diagnostik App Service, buka aplikasi App Service atau App Service Environment Anda di portal Microsoft Azure. Di navigasi kiri, klik Diagnosis dan selesaikan masalah.

Menggunakan Konsol Debug Kudu

App Service dilengkapi dengan konsol debug yang dapat Anda gunakan untuk menelusuri kesalahan, menjelajahi, mengunggah file, serta titik akhir JSON untuk mendapatkan informasi tentang lingkungan Anda. Konsol ini disebut Konsol Kudu atau Dasbor SCM untuk aplikasi Anda.

Anda dapat mengakses dasbor ini dengan membuka tautan https://<Nama aplikasi Anda>.scm.azurewebsites.net/.

Beberapa hal yang disediakan Kudu adalah:

  • pengaturan lingkungan untuk aplikasi Anda
  • aliran log
  • cadangan diagnostik
  • konsol debug tempat Anda dapat menjalankan cmdlet Powershell dan perintah DOS dasar.

Fitur lain yang berguna dari Kudu adalah, jika aplikasi Anda mengeluarkan pengecualian kesempatan pertama, Anda dapat menggunakan Kudu dan alat SysInternals Procdump untuk membuat cadangan memori. Cadangan memori ini adalah rekam jepret dari proses dan sering kali dapat membantu Anda memecahkan masalah yang lebih rumit dengan aplikasi Anda.

Untuk mengetahui informasi lebih lanjut tentang fitur yang tersedia di Kudu, lihat Peralatan Azure DevOps yang harus Anda ketahui.

3. Memitigasi masalah

Menskalakan aplikasi

Di Azure App Service, untuk meningkatkan performa dan throughput, Anda dapat menyesuaikan skala di mana Anda menjalankan aplikasi Anda. Menskalakan aplikasi melibatkan dua tindakan yang saling terkait: mengubah paket Azure App Service Anda ke tingkat harga yang lebih tinggi dan mengonfigurasi pengaturan tertentu setelah Anda beralih ke tingkat harga yang lebih tinggi.

Untuk informasi lebih lanjut tentang penskalaan, lihat Menskalakan aplikasi di Azure App Service.

Selain itu, Anda dapat memilih untuk menjalankan aplikasi Anda pada lebih dari satu instans. Penskalaan tidak hanya memberi Anda kemampuan pemrosesan yang lebih banyak, tetapi juga memberi Anda sejumlah toleransi kegagalan. Jika prosesnya gagal pada satu instans, instans yang lain melanjutkan untuk melayani permintaan.

Anda dapat mengatur penskalaan menjadi Manual atau Otomatis.

Menggunakan AutoHeal

AutoHeal mendaur ulang proses pekerja untuk aplikasi Anda berdasarkan pengaturan yang Anda pilih (seperti perubahan konfigurasi, permintaan, batas berbasis memori, atau waktu yang diperlukan untuk menjalankan permintaan). Sering kali, daur ulang proses adalah cara tercepat untuk pulih dari masalah. Meskipun Anda selalu dapat menghidupkan ulang aplikasi secara langsung dalam portal Microsoft Azure, AutoHeal akan melakukannya untuk Anda secara otomatis. Satu hal yang perlu Anda lakukan adalah menambahkan beberapa pemicu di akar web.config untuk aplikasi Anda. Pengaturan ini akan berfungsi dengan cara yang sama bahkan jika aplikasi Anda bukan aplikasi .NET.

Untuk informasi lebih lanjut, lihat Situs Web Auto-Healing Azure.

Menghidupkan ulang aplikasi

Menghidupkan ulang seringkali merupakan cara paling sederhana untuk pulih dari masalah yang terjadi sekali. Di portal Microsoft Azure, di bilah aplikasi, Anda memiliki opsi untuk menghentikan atau menghidupkan ulang aplikasi.

restart app to solve performance issues

Anda juga dapat mengelola aplikasi Anda menggunakan Azure PowerShell. Untuk informasi selanjutnya, lihat Menggunakan Azure PowerShell dengan Azure Resource Manager.

Sumber daya lainnya

Tutorial: Menjalankan pengujian beban untuk mengidentifikasi penyempitan performa di aplikasi web