Öğretici: Bir web uygulamasında performans sorunlarını belirlemek için yük testi çalıştırma

Bu öğreticide, Azure Load Testing kullanarak bir web uygulamasında performans sorunlarını tanımlamayı öğreneceksiniz. Örnek bir Node.js web uygulaması için yükün benzetimini yapın ve ardından yük testi panosunu kullanarak istemci tarafı ve sunucu tarafı ölçümlerini analiz edin.

Örnek uygulama, NoSQL veritabanıyla etkileşim kuran node.js web API'lerinden oluşur. Web API'sini Azure Uygulaması Service web uygulamalarına dağıtır ve veritabanı olarak Azure Cosmos DB'yi kullanırsınız.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Örnek uygulamayı dağıtın.
  • Yük testi oluşturma ve çalıştırma.
  • Yük testine Azure uygulama bileşenleri ekleyin.
  • Yük testi panosunu kullanarak performans sorunlarını belirleyin.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
  • Yerel bilgisayarınızda yüklü Azure CLI.
  • Azure CLI sürüm 2.2.0 veya üzeri. Bilgisayarınızda yüklü sürümü bulmak için komutunu çalıştırın az --version . Azure CLI'yı yüklemeniz veya yükseltmeniz gerekiyorsa bkz . Azure CLI'yi yükleme.
  • Visual Studio Code. Sahip değilseniz indirip yükleyin.
  • Git. Sahip değilseniz indirip yükleyin.

Önkoşul denetimi

Başlamadan önce ortamınızı doğrulayın:

  • Azure portalında oturum açın ve aboneliğinizin etkin olup olmadığını denetleyin.

  • komutunu çalıştırarak az --versionbir terminalde veya komut penceresinde Azure CLI sürümünüzü denetleyin. En son sürüm için en son sürüm notları bölümüne bakın.

    En son sürüme sahip değilseniz, işletim sisteminiz veya platformunuz için yükleme kılavuzunu izleyerek yüklemenizi güncelleştirin.

Örnek uygulamayı dağıtma

Bu öğreticide, Azure Uygulaması Hizmetine dağıttığınız örnek bir web uygulamasına yük oluşturacaksınız. Örnek uygulamayı Azure aboneliğinize dağıtmak için Azure CLI komutlarını, Git komutlarını ve PowerShell komutlarını kullanın.

  1. Windows PowerShell'i açın, Azure'da oturum açın ve aboneliği ayarlayın:

    az login
    az account set --subscription <your-Azure-Subscription-ID>
    
  2. Örnek uygulamanın kaynak deposunu kopyalayın:

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

    Örnek uygulama, Azure Uygulaması Hizmeti web bileşeninden ve Azure Cosmos DB veritabanından oluşan bir Node.js uygulamasıdır. Depo, örnek uygulamayı Azure aboneliğinize dağıtan bir PowerShell betiği içerir. Ayrıca, sonraki adımlarda kullanacağınız bir Apache JMeter betiği de vardır.

  3. Node.js uygulamasının dizinine gidin ve bu PowerShell betiğini kullanarak örnek uygulamayı dağıtın:

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

    Bahşiş

    PowerShell'i Linux/WSL veya macOS'a yükleyebilirsiniz.

    Yükledikten sonra, önceki komutu olarak pwsh ./deploymentscript.ps1çalıştırabilirsiniz.

  4. İstemde şunları sağlayın:

    • Azure abonelik kimliğiniz.
    • Web uygulamanız için benzersiz bir ad.
    • Bir konum. Varsayılan olarak, konumu şeklindedir eastus. Get-AzLocation komutunu çalıştırarak bölge kodlarını alabilirsiniz.

    Önemli

    Web uygulamanızın adı için yalnızca küçük harfler ve sayılar kullanın. Boşluk veya özel karakter kullanmayın.

  5. Dağıtım tamamlandıktan sonra, tarayıcı penceresinde açarak https://<yourappname>.azurewebsites.net çalışan örnek uygulamaya gidin.

Örnek uygulamayı dağıtıp çalıştırdığınıza göre artık bir Azure yük testi kaynağı ve yük testi oluşturabilirsiniz.

Yük testi oluşturma

Bu öğreticide, JMeter test betiğini (jmx dosyası) karşıya yükleyerek Azure CLI ile bir yük testi oluşturacaksınız. Örnek uygulama deposu zaten bir yük testi yapılandırma dosyası ve JMeter test betiği içeriyor.

Azure portalını kullanarak yük testi oluşturmak için Hızlı Başlangıç: JMeter betiğiyle yük testi oluşturma bölümünde yer alan adımları izleyin.

Azure CLI kullanarak bir Azure yük testi kaynağı ve yük testi oluşturmak için şu adımları izleyin:

  1. Bir terminal penceresi açın ve Azure aboneliğinizde oturum açmak için aşağıdaki komutu girin.

    az login
    
  2. Örnek uygulama dizinine gidin.

    cd nodejs-appsvc-cosmosdb-bottleneck
    
  3. Azure yük testi kaynağı için bir kaynak grubu oluşturun.

    İsteğe bağlı olarak, daha önce dağıtılan örnek uygulamanın kaynak grubunu da yeniden kullanabilirsiniz.

    Metin yer tutucusunun <load-testing-resource-group-name> yerine kaynak grubunun adını yazın.

    resourceGroup="<load-testing-resource-group-name>"
    location="East US"
    
    az group create --name $resourceGroup --location $location
    
  4. komutuyla az load create bir Azure yük testi kaynağı oluşturun.

    Metin yer tutucusunun <load-testing-resource-name> yerine yük testi kaynağının adını yazın.

    # 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. komutuyla az load test create örnek uygulamanıza yük benzetimi için bir yük testi oluşturun.

    Metin yer tutucusunu <web-app-hostname> örnek uygulamanın App Service konak adıyla değiştirin. Bu değer biçimindedir myapp.azurewebsites.net. URL'nin bölümünü eklemeyin https:// .

    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
    

    Bu komut, JMeter test betiğine SampleApp.jmx başvuran yük testi yapılandırma dosyasını kullanırSampleapp.yaml. Örnek uygulama konak adını yük testine geçirmek için bir komut satırı parametresi kullanırsınız.

Artık Azure aboneliğinizdeki örnek web uygulamasına yük oluşturmak için bir Azure yük testi kaynağınız ve yük testiniz var.

Uygulamayı izlemek için Azure uygulama bileşenleri ekleme

Azure Yük Testi, uygulamanızın Azure bileşenleri için kaynak ölçümlerini izlemenizi sağlar. Bu sunucu tarafı ölçümlerini analiz ederek uygulamanızdaki performans ve kararlılık sorunlarını doğrudan Azure Load Testing panosundan belirleyebilirsiniz.

Bu öğreticide, Uygulama Hizmeti, Cosmos DB hesabı ve daha fazlası gibi Azure'da dağıtmış olduğunuz örnek uygulamanın Azure bileşenlerini ekleyeceksiniz.

Örnek uygulamanın Azure uygulama bileşenlerini yük testinize eklemek için:

  1. Azure portalında Azure yük testi kaynağınıza gidin.

  2. Sol bölmede Testler'i seçerek yük testlerinin listesini görüntüleyin

  3. Yük testinizin yanındaki onay kutusunu ve ardından Düzenle'yi seçin.

    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. İzleme sekmesine gidin ve Ekle/Değiştir'i seçin.

  5. Daha önce dağıtılan örnek uygulamanın onay kutularını seçin ve ardından Uygula'yı seçin.

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

    Bahşiş

    Kaynak grubu filtresini kullanarak yalnızca örnek uygulama kaynak grubundaki Azure kaynaklarını görüntüleyebilirsiniz.

  6. Değişiklikleri yük testi yapılandırmasına kaydetmek için Uygula'yı seçin.

Yük testi çalışırken sunucu tarafı ölçümlerini izlemeyi etkinleştirmek için örnek uygulamanın Azure uygulama bileşenlerini yük testinize başarıyla eklediniz.

Yük testini çalıştırma

Artık Yük testini çalıştırarak Azure aboneliğinizde dağıtılan örnek uygulamayla yük simülasyonu yapabilirsiniz. Bu öğreticide yük testini Azure portalından çalıştıracaksınız. Alternatif olarak, CI/CD iş akışınızı yük testinizi çalıştıracak şekilde yapılandırabilirsiniz.

Yük testinizi Azure portalında çalıştırmak için:

  1. Azure portalında Azure yük testi kaynağınıza gidin.

  2. Sol bölmede Testler'i seçerek yük testlerinin listesini görüntüleyin

  3. Test ayrıntılarını ve test çalıştırmalarının listesini görüntülemek için listeden yük testini seçin.

  4. Çalıştır'ı seçin ve ardından yük testini başlatmak için yeniden Çalıştır'ı seçin.

    İsteğe bağlı olarak, bir test çalıştırması açıklaması girebilirsiniz.

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

    Bir yük testi çalıştırdığınızda Azure Load Testing, JMeter test betiğini ve ek dosyaları test altyapısı örneklerine dağıtır ve ardından yük testini başlatır.

  5. Yük testi başladığında yük testi panosunu görmeniz gerekir.

    Pano gösterilmiyorsa Yenile'yi ve ardından listeden test çalıştırmasını seçebilirsiniz.

    Yük testi panosu, istemci tarafı ölçümleri ve sunucu tarafı uygulama ölçümleri gibi test çalıştırması ayrıntılarını sunar. Panodaki grafikler otomatik olarak yenilenir.

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

    Grafikleri özelleştirmek için birden çok filtre uygulayabilir veya sonuçları farklı yüzdebirlik dilimlere toplayabilirsiniz.

    Bahşiş

    Azure portalından Durdur'u seçerek istediğiniz zaman yük testini durdurabilirsiniz.

Sonraki bölüme geçmeden önce yük testi tamamen bitene kadar bekleyin.

Performans sorunlarını belirlemek için sunucu tarafı ölçümlerini kullanma

Bu bölümde, uygulamadaki performans sorunlarını belirlemek için yük testinin sonuçlarını analiz edin. Sorunun kök nedenini belirlemek için hem istemci tarafı hem de sunucu tarafı ölçümlerini inceleyin.

  1. İlk olarak, istemci tarafı ölçümlerine bakın. ve get API istekleri için Yanıt süresi ölçümü için 90. yüzdebirlik değerin add API'ye lasttimestamp göre daha yüksek olduğunu fark edeceksiniz.

    Screenshot that shows the client-side metrics.

    Api'nin diğer API'lerden daha az hataya sahip olduğu lasttimestamp Hatalar için benzer bir desen görebilirsiniz.

    Screenshot that shows the error chart.

    ve get API'lerinin add sonuçları benzerken API lasttimestamp farklı davranır. Hem hem get de API'leri veritabanı erişimi içerdiğindenadd, bunun nedeni veritabanıyla ilgili olabilir.

  2. Bu performans sorununu daha ayrıntılı bir şekilde araştırmak için aşağı kaydırarak Sunucu tarafı ölçümler panosu bölümüne gidin.

    Sunucu tarafı ölçümlerinde Azure uygulama bileşenleriniz hakkında ayrıntılı bilgiler gösterilir: Azure Uygulaması Hizmet planı, Azure Uygulaması Service web uygulaması ve Azure Cosmos DB.

    Screenshot that shows the Azure App Service plan metrics.

    Azure Uygulaması Hizmeti planının ölçümlerinde CPU Yüzdesi ve Bellek Yüzdesi ölçümlerinin kabul edilebilir bir aralık içinde olduğunu görebilirsiniz.

  3. Şimdi Azure Cosmos DB sunucu tarafı ölçümlerine bakın.

    Screenshot that shows Azure Cosmos DB metrics.

    Normalleştirilmiş RU Tüketimi ölçümlerinin veritabanının %100 kaynak kullanımında hızla çalıştığını gösterdiğine dikkat edin. Yüksek kaynak kullanımı veritabanı azaltma hatalarıyla karşılaşıyor olabilir. Ayrıca ve get web API'lerinin yanıt sürelerini add artırabilir.

    Azure Cosmos DB örneği için Sağlanan Aktarım Hızı ölçümünün en fazla 400 RU aktarım hızına sahip olduğunu da görebilirsiniz. Veritabanının sağlanan aktarım hızını artırmak performans sorununu çözebilir.

Veritabanı aktarım hızını artırma

Bu bölümde, performans sorunlarını çözmek için veritabanına daha fazla kaynak ayıracaksınız.

Azure Cosmos DB için veritabanı RU ölçek ayarını artırın:

  1. Örnek uygulama dağıtımının bir parçası olarak sağladığınız Azure Cosmos DB kaynağına gidin.

  2. Veri Gezgini sekmesini seçin.

    Screenshot that shows Data Explorer tab.

  3. Ölçek ve Ayarlar'i seçin ve aktarım hızı değerini 1200 olarak güncelleştirin.

    Screenshot that shows the updated Azure Cosmos DB scale settings.

  4. Değişiklikleri onaylamak için Kaydet'i seçin.

Performans iyileştirmelerini doğrulama

Veritabanı aktarım hızını artırdığınıza göre yük testini yeniden çalıştırın ve performans sonuçlarının iyileştiğini doğrulayın:

  1. Test çalıştırması panosunda Yeniden Çalıştır'ı seçin ve ardından Testi yeniden çalıştır bölmesinde Yeniden Çalıştır'ıseçin.

    Screenshot that shows selections for running the load test.

    Sağlama, Yürütme ve Bitti durumları arasında geçiş yapılan durum sütununa sahip yeni bir test çalıştırması girişi görebilirsiniz. İstediğiniz zaman, yük testinin nasıl ilerletişini izlemek için test çalıştırmasını seçin.

  2. Yük testi tamamlandıktan sonra Yanıt süresi sonuçlarını ve istemci tarafı ölçümlerinin Hatalar sonuçlarını denetleyin.

  3. Azure Cosmos DB için sunucu tarafı ölçümlerini denetleyin ve performansın iyileştiğinden emin olun.

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

    Azure Cosmos DB Normalleştirilmiş RU Tüketimi değeri artık %100'in çok altındadır.

Veritabanının ölçek ayarlarını güncelleştirdiğinize göre şunları görebilirsiniz:

  • ve get API'lerinin add yanıt süresi geliştirildi.
  • Normalleştirilmiş RU tüketimi sınırın altında kalır.

Sonuç olarak, uygulamanızın genel performansı iyileştirildi.

Kaynakları temizleme

Önemli

Diğer Azure Yük Testi öğreticileri ve nasıl yapılır makaleleri için oluşturduğunuz Azure Yük Testi kaynağını yeniden kullanabilirsiniz.

Oluşturduğunuz kaynaklardan hiçbirini kullanmayı planlamıyorsanız, daha fazla ücret ödememek için bunları silin. Örnek uygulamayı farklı bir kaynak grubuna dağıttıysanız aşağıdaki adımları tekrarlamak isteyebilirsiniz.

Azure portalını kullanarak kaynakları silmek için:

  1. Sol üst köşedeki menü düğmesini ve ardından Kaynak grupları'nı seçin.

  2. Listeden, oluşturduğunuz kaynak grubunu seçin.

  3. Kaynak grubunu sil'i seçin. Screenshot of the selections to delete a resource group in the Azure portal.

  4. Kaynak grubu adını girin. Ardından Sil'i seçin.

Azure CLI kullanarak kaynakları silmek için aşağıdaki komutu girin:

az group delete --name <yourresourcegroup>

Kaynak grubunu sildiğinizde içindeki tüm kaynakların silineceği unutmayın.