Öğ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 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 App Service web uygulamalarına dağıtır ve veritabanı olarak Azure Cosmos DB'yi kullanırsınız.

Bu eğitimde şunları öğreniyorsunuz:

  • Ö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

  • Aktif bir aboneliğe sahip bir Azure hesabı. Eğer bir 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 App Service'e 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 App Service web bileşeninden ve Azure Cosmos DB veritabanından oluşan Node.js bir uygulamadı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
    

    Tavsiye

    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.yaml başvuran yük testi yapılandırma dosyasını kullanırSampleApp.jmx. Ö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.

    Azure portalında yük testlerinin listesini gösteren, listeden bir testin nasıl seçildiğini ve yük testi yapılandırmasını değiştirmek için Düzenle düğmesinin vurgulandığı ekran görüntüsü.

  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.

    Azure portalında bir yük testine uygulama bileşenlerinin nasıl ekleneceğini gösteren ekran görüntüsü.

    Tavsiye

    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.

    Azure portalında yük testi başlatmayı gösteren ekran görüntüsü.

    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.

    Azure portalındaki yük testi panosundaki istemci tarafı ölçüm graflarını gösteren ekran görüntüsü.

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

    Tavsiye

    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 API istekleri için add ölçümü için 90. yüzdebirlik değerin get API'ye lasttimestamp göre daha yüksek olduğunu fark edeceksiniz.

    İstemci tarafı ölçümlerini gösteren ekran görüntüsü.

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

    Hata grafiğini gösteren ekran görüntüsü.

    ve add API'lerinin get sonuçları benzerken API lasttimestamp farklı davranır. Hem hem add de API'leri veritabanı erişimi içerdiğindenget, 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çümleri Azure uygulama bileşenleriniz hakkında ayrıntılı bilgileri gösterir: Azure App Service planı, Azure App Service web uygulaması ve Azure Cosmos DB.

    Azure App Service planı ölçümlerini gösteren ekran görüntüsü.

    Azure App Service 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.

    Azure Cosmos DB ölçümlerini gösteren ekran görüntüsü.

    Normalleştirilmiş RU Tüketimi ölçümünde veritabanının hızla 100% kaynak kullanımında çalıştığının gösterildiğine dikkat edin. Yüksek kaynak kullanımı veritabanı azaltma hatalarıyla karşılaşıyor olabilir. Ayrıca ve add web API'lerinin yanıt sürelerini get 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.

    Veri Gezgini sekmesini gösteren ekran görüntüsü.

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

    Güncelleştirilmiş Azure Cosmos DB ölçek ayarlarını gösteren ekran görüntüsü.

  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.

    Yük testi çalıştırma seçimlerini gösteren ekran görüntüsü.

    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.

    Ölçek ayarları güncelleştirildikten sonra Azure Cosmos DB istemci tarafı ölçümlerini gösteren ekran görüntüsü.

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

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

  • ve add API'lerinin get 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ı temizle

Ö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 seçeneğini seçin. Azure portalında kaynak grubunu silme seçimlerinin ekran görüntüsü.

  4. Kaynak grup 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.