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

Dalam tutorial ini, Anda mempelajari cara mengidentifikasi hambatan performa dalam aplikasi web dengan menggunakan Azure Load Testing. Anda mensimulasikan beban untuk aplikasi web Node.js sampel, lalu menggunakan dasbor uji beban untuk menganalisis metrik sisi klien dan sisi server.

Aplikasi sampel terdiri dari API web Node.js, yang berinteraksi dengan database NoSQL. Anda menyebarkan API web ke aplikasi web Azure App Service dan menggunakan Azure Cosmos DB sebagai database.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Sebarkan aplikasi sampel.
  • Membuat dan menjalankan uji beban.
  • Tambahkan komponen aplikasi Azure ke pengujian beban.
  • Identifikasi hambatan performa dengan menggunakan dasbor uji beban.

Prasyarat

  • Akun Azure dengan langganan aktif. Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.
  • Azure CLI dipasang di komputer lokal Anda.
  • Azure CLI versi 2.2.0 atau yang lebih baru. Jalankan az --version untuk menemukan versi yang terinstal pada komputer Anda. Jika Anda perlu menginstal atau meningkatkan Azure CLI, lihat Cara menginstal Azure CLI.
  • Visual Studio Code. Jika Anda tidak memilikinya, unduh dan instal.
  • Git. Jika Anda tidak memilikinya, unduh dan instal.

Pemeriksaan Prasyarat

Sebelum memulai, validasi lingkungan Anda:

Menyebarkan aplikasi sampel

Dalam tutorial ini, Anda menghasilkan beban terhadap aplikasi web sampel yang Anda sebarkan ke Azure App Service. Gunakan perintah Azure CLI, perintah Git, dan perintah PowerShell untuk menyebarkan aplikasi sampel di langganan Azure Anda.

  1. Buka Windows PowerShell, masuk ke Azure, dan atur langganan:

    az login
    az account set --subscription <your-Azure-Subscription-ID>
    
  2. Kloning repositori sumber aplikasi sampel:

    git clone https://github.com/Azure-Samples/nodejs-appsvc-cosmosdb-bottleneck.git
    

    Aplikasi sampel adalah aplikasi Node.js yang terdiri dari komponen web Azure App Service dan database Azure Cosmos DB. Repositori menyertakan skrip PowerShell yang menyebarkan aplikasi sampel ke langganan Azure Anda. Ini juga memiliki skrip Apache JMeter yang akan Anda gunakan di langkah-langkah selanjutnya.

  3. Buka direktori aplikasi Node.js dan sebarkan aplikasi sampel dengan menggunakan skrip PowerShell ini:

    cd nodejs-appsvc-cosmosdb-bottleneck
    .\deploymentscript.ps1
    

    Tip

    Anda dapat menginstal PowerShell di Linux/WSL atau macOS.

    Setelah menginstalnya, Anda dapat menjalankan perintah sebelumnya sebagai pwsh ./deploymentscript.ps1.

  4. Pada perintah, berikan:

    • ID langganan Azure Anda.
    • Nama unik untuk aplikasi web Anda.
    • Lokasi. Secara default, lokasinya adalah eastus. Anda bisa mendapatkan kode wilayah dengan menjalankan perintah Get-AzLocation .

    Penting

    Untuk nama aplikasi web Anda, gunakan hanya huruf kecil dan angka. Jangan gunakan spasi atau karakter khusus.

  5. Setelah penyebaran selesai, buka aplikasi sampel yang sedang berjalan dengan membuka https://<yourappname>.azurewebsites.net di jendela browser.

Setelah aplikasi sampel disebarkan dan dijalankan, Anda dapat membuat sumber daya pengujian beban Azure dan pengujian beban.

Membuat uji beban

Dalam tutorial ini, Anda membuat uji beban dengan Azure CLI dengan mengunggah skrip pengujian JMeter (jmx file). Repositori aplikasi sampel sudah berisi file konfigurasi uji beban dan skrip pengujian JMeter.

Untuk membuat uji beban dengan menggunakan portal Azure, ikuti langkah-langkah di Mulai Cepat: buat uji beban dengan skrip JMeter.

Ikuti langkah-langkah ini untuk membuat sumber daya pengujian beban Azure dan uji beban dengan menggunakan Azure CLI:

  1. Buka jendela terminal dan masukkan perintah berikut untuk masuk ke langganan Azure Anda.

    az login
    
  2. Buka direktori aplikasi sampel.

    cd nodejs-appsvc-cosmosdb-bottleneck
    
  3. Buat grup sumber daya untuk sumber daya pengujian beban Azure.

    Secara opsional, Anda juga dapat menggunakan kembali grup sumber daya dari aplikasi sampel yang Anda sebarkan sebelumnya.

    <load-testing-resource-group-name> Ganti tempat penampung teks dengan nama grup sumber daya.

    resourceGroup="<load-testing-resource-group-name>"
    location="East US"
    
    az group create --name $resourceGroup --location $location
    
  4. Buat sumber daya pengujian beban Azure dengan az load create perintah .

    <load-testing-resource-name> Ganti tempat penampung teks dengan nama sumber daya pengujian beban.

    # This script requires the following Azure CLI extensions:
    # - load
    
    loadTestResource="<load-testing-resource-name>"
    
    az load create --name $loadTestResource --resource-group $resourceGroup --location $location
    
  5. Buat pengujian beban untuk mensimulasikan beban terhadap aplikasi sampel Anda dengan az load test create perintah .

    <web-app-hostname> Ganti tempat penampung teks dengan nama host App Service dari aplikasi sampel. Nilai ini adalah dari bentuk myapp.azurewebsites.net. Jangan sertakan https:// bagian URL.

    testId="sample-app-test"
    webappHostname="<web-app-hostname>"
    
    az load test create --test-id $testId --load-test-resource $loadTestResource --resource-group $resourceGroup --load-test-config-file SampleApp.yaml --env webapp=$webappHostname
    

    Perintah ini menggunakan Sampleapp.yaml file konfigurasi uji beban, yang mereferensikan SampleApp.jmx skrip pengujian JMeter. Anda menggunakan parameter baris perintah untuk meneruskan nama host aplikasi sampel ke pengujian beban.

Anda sekarang memiliki sumber daya pengujian beban Azure dan pengujian beban untuk menghasilkan beban terhadap aplikasi web sampel di langganan Azure Anda.

Menambahkan komponen aplikasi Azure untuk memantau aplikasi

Azure Load Testing memungkinkan Anda memantau metrik sumber daya untuk komponen Azure aplikasi Anda. Dengan menganalisis metrik sisi server ini , Anda dapat mengidentifikasi masalah performa dan stabilitas dalam aplikasi Anda langsung dari dasbor Azure Load Testing.

Dalam tutorial ini, Anda menambahkan komponen Azure untuk aplikasi sampel yang Anda sebarkan di Azure, seperti layanan aplikasi, akun Cosmos DB, dan banyak lagi.

Untuk menambahkan komponen aplikasi Azure untuk aplikasi sampel ke pengujian beban Anda:

  1. Di portal Azure, buka sumber daya pengujian beban Azure Anda.

  2. Di panel kiri, pilih Pengujian untuk menampilkan daftar pengujian beban

  3. Pilih kotak centang di samping uji beban Anda, lalu pilih Edit.

    Screenshot that shows the list of load tests in the Azure portal, highlighting how to select a test from the list and the Edit button to modify the load test configuration.

  4. Buka tab Pemantauan , lalu pilih Tambahkan/Ubah.

  5. Pilih kotak centang untuk aplikasi sampel yang Anda sebarkan sebelumnya, lalu pilih Terapkan.

    Screenshot that shows how to add app components to a load test in the Azure portal.

    Tip

    Anda dapat menggunakan filter grup sumber daya untuk hanya menampilkan sumber daya Azure di grup sumber daya aplikasi sampel.

  6. Pilih Terapkan untuk menyimpan perubahan ke konfigurasi uji beban.

Anda berhasil menambahkan komponen aplikasi Azure untuk aplikasi sampel ke pengujian beban Anda untuk mengaktifkan pemantauan metrik sisi server saat pengujian beban sedang berjalan.

Menjalankan pengujian beban

Anda sekarang dapat menjalankan pengujian beban untuk mensimulasikan beban terhadap aplikasi sampel yang Anda sebarkan di langganan Azure Anda. Dalam tutorial ini, Anda menjalankan uji beban dari dalam portal Azure. Secara bergantian, Anda dapat mengonfigurasi alur kerja CI/CD untuk menjalankan pengujian beban Anda.

Untuk menjalankan pengujian beban Anda di portal Azure:

  1. Di portal Azure, buka sumber daya pengujian beban Azure Anda.

  2. Di panel kiri, pilih Pengujian untuk menampilkan daftar pengujian beban

  3. Pilih uji beban dari daftar untuk melihat detail pengujian dan daftar eksekusi pengujian.

  4. Pilih Jalankan, lalu Jalankan lagi untuk memulai pengujian beban.

    Secara opsional, Anda dapat memasukkan deskripsi uji coba.

    Screenshot that shows how to start a load test in the Azure portal.

    Saat Anda menjalankan pengujian beban, Azure Load Testing menyebarkan skrip pengujian JMeter dan file tambahan apa pun ke instans mesin pengujian, lalu memulai pengujian beban.

  5. Saat pengujian beban dimulai, Anda akan melihat dasbor uji beban.

    Jika dasbor tidak ditampilkan, Anda dapat memilih Refresh pada lalu pilih uji coba dari daftar.

    Dasbor uji beban menyajikan detail uji coba, seperti metrik sisi klien dan metrik aplikasi sisi server. Grafik pada refresh dasbor secara otomatis.

    Screenshot that shows the client-side metrics graphs in the load test dashboard in the Azure portal.

    Anda dapat menerapkan beberapa filter atau mengagregasi hasil ke persentil yang berbeda untuk menyesuaikan bagan.

    Tip

    Anda dapat menghentikan pengujian beban kapan saja dari portal Azure dengan memilih Hentikan.

Tunggu hingga pengujian beban selesai sepenuhnya sebelum Anda melanjutkan ke bagian berikutnya.

Menggunakan metrik sisi server untuk mengidentifikasi hambatan performa

Di bagian ini, Anda menganalisis hasil uji beban untuk mengidentifikasi hambatan performa dalam aplikasi. Periksa metrik sisi klien dan sisi server untuk menentukan akar penyebab masalah.

  1. Pertama, lihat metrik sisi klien. Anda melihat bahwa persentil ke-90 untuk metrik Waktu respons untuk add permintaan API dan get lebih tinggi dari untuk lasttimestamp API.

    Screenshot that shows the client-side metrics.

    Anda dapat melihat pola serupa untuk Kesalahan, di mana lasttimestamp API memiliki lebih sedikit kesalahan daripada API lainnya.

    Screenshot that shows the error chart.

    Hasil add api dan get serupa, sedangkan lasttimestamp API bereaksi berbeda. Penyebabnya mungkin terkait dengan database, karena add API dan get melibatkan akses database.

  2. Untuk menyelidiki hambatan ini secara lebih rinci, gulir ke bawah ke bagian dasbor metrik sisi server.

    Metrik sisi server menampilkan informasi terperinci tentang komponen aplikasi Azure Anda: Paket Azure App Service, aplikasi web Azure App Service, dan Azure Cosmos DB.

    Screenshot that shows the Azure App Service plan metrics.

    Dalam metrik untuk paket Azure App Service, Anda dapat melihat bahwa metrik Persentase CPU dan Persentase Memori berada dalam rentang yang dapat diterima.

  3. Sekarang, lihat metrik sisi server Azure Cosmos DB.

    Screenshot that shows Azure Cosmos DB metrics.

    Perhatikan bahwa metrik Konsumsi RU yang Dinormalisasi menunjukkan bahwa database berjalan dengan cepat pada pemanfaatan sumber daya 100%. Penggunaan sumber daya yang tinggi dapat menyebabkan kesalahan pembatasan database. Ini juga dapat meningkatkan waktu respons untuk add API web dan get .

    Anda juga dapat melihat bahwa metrik Throughput yang Disediakan untuk instans Azure Cosmos DB memiliki throughput maksimum 400 RU. Meningkatkan throughput database yang disediakan mungkin menyelesaikan masalah performa.

Meningkatkan throughput database

Di bagian ini, Anda mengalokasikan lebih banyak sumber daya ke database untuk mengatasi hambatan performa.

Untuk Azure Cosmos DB, tingkatkan pengaturan skala RU database:

  1. Buka sumber daya Azure Cosmos DB yang Anda provisikan sebagai bagian dari penyebaran aplikasi sampel.

  2. Pilih tab Data Explorer .

    Screenshot that shows Data Explorer tab.

  3. Pilih Skalakan & Pengaturan, dan perbarui nilai throughput menjadi 1200.

    Screenshot that shows the updated Azure Cosmos DB scale settings.

  4. Pilih Simpan untuk mengonfirmasi perubahan.

Memvalidasi peningkatan performa

Sekarang setelah Anda meningkatkan throughput database, jalankan ulang pengujian beban dan verifikasi bahwa hasil performa ditingkatkan:

  1. Pada dasbor uji coba, pilih Jalankan ulang, lalu pilih Jalankan ulang pada panel Jalankan ulang pengujian .

    Screenshot that shows selections for running the load test.

    Anda dapat melihat entri uji coba baru dengan kolom status yang menelusuri status Provisi, Eksekusi, dan Selesai . Kapan saja, pilih uji coba untuk memantau perkembangan pengujian beban.

  2. Setelah pengujian beban selesai, periksa hasil Waktu respons dan hasil Kesalahan metrik sisi klien.

  3. Periksa metrik sisi server untuk Azure Cosmos DB dan pastikan performanya meningkat.

    Screenshot that shows the Azure Cosmos DB client-side metrics after update of the scale settings.

    Nilai Konsumsi RU yang Dinormalisasi Azure Cosmos DB sekarang jauh di bawah 100%.

Sekarang setelah Anda memperbarui pengaturan skala database, Anda dapat melihat bahwa:

  • Waktu respons untuk add API dan get ditingkatkan.
  • Konsumsi RU yang dinormalisasi tetap berada di bawah batas.

Akibatnya, performa keseluruhan aplikasi Anda meningkat.

Membersihkan sumber daya

Penting

Anda dapat menggunakan kembali sumber daya Azure Load Testing yang Anda buat untuk tutorial Pengujian Beban Azure lainnya dan artikel panduan.

Jika Anda tidak berencana untuk menggunakan salah satu sumber daya yang Anda buat, hapus sumber daya tersebut sehingga Anda tidak dikenakan biaya lebih lanjut. Jika Anda telah menyebarkan aplikasi sampel di grup sumber daya yang berbeda, Anda mungkin ingin mengulangi langkah-langkah berikut.

Untuk menghapus sumber daya dengan menggunakan portal Azure:

  1. Pilih tombol menu di sudut kiri atas, lalu pilih Grup sumber daya.

  2. Dari daftar, pilih grup sumber daya yang Anda buat.

  3. Pilih Hapus grup sumber daya. Screenshot of the selections to delete a resource group in the Azure portal.

  4. Masukkan nama grup sumber daya. Kemudian pilih Hapus.

Untuk menghapus sumber daya dengan menggunakan Azure CLI, masukkan perintah berikut:

az group delete --name <yourresourcegroup>

Ingat, menghapus grup sumber daya akan menghapus semua sumber daya di dalamnya.