Öğ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 --version
bir 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.
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>
Ö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.
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
İ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.
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:
Bir terminal penceresi açın ve Azure aboneliğinizde oturum açmak için aşağıdaki komutu girin.
az login
Örnek uygulama dizinine gidin.
cd nodejs-appsvc-cosmosdb-bottleneck
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
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
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çimindedirmyapp.azurewebsites.net
. URL'nin bölümünü eklemeyinhttps://
.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:
Sol bölmede Testler'i seçerek yük testlerinin listesini görüntüleyin
Yük testinizin yanındaki onay kutusunu ve ardından Düzenle'yi seçin.
İzleme sekmesine gidin ve Ekle/Değiştir'i seçin.
Daha önce dağıtılan örnek uygulamanın onay kutularını seçin ve ardından Uygula'yı seçin.
Bahşiş
Kaynak grubu filtresini kullanarak yalnızca örnek uygulama kaynak grubundaki Azure kaynaklarını görüntüleyebilirsiniz.
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:
Sol bölmede Testler'i seçerek yük testlerinin listesini görüntüleyin
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.
Ç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.
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.
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.
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.
İ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ğerinadd
API'yelasttimestamp
göre daha yüksek olduğunu fark edeceksiniz.Api'nin diğer API'lerden daha az hataya sahip olduğu
lasttimestamp
Hatalar için benzer bir desen görebilirsiniz.ve
get
API'lerininadd
sonuçları benzerken APIlasttimestamp
farklı davranır. Hem hemget
de API'leri veritabanı erişimi içerdiğindenadd
, bunun nedeni veritabanıyla ilgili olabilir.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.
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.
Şimdi Azure Cosmos DB sunucu tarafı ölçümlerine bakın.
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üreleriniadd
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:
Örnek uygulama dağıtımının bir parçası olarak sağladığınız Azure Cosmos DB kaynağına gidin.
Veri Gezgini sekmesini seçin.
Ölçek ve Ayarlar'i seçin ve aktarım hızı değerini 1200 olarak güncelleştirin.
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:
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.
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.
Yük testi tamamlandıktan sonra Yanıt süresi sonuçlarını ve istemci tarafı ölçümlerinin Hatalar sonuçlarını denetleyin.
Azure Cosmos DB için sunucu tarafı ölçümlerini denetleyin ve performansın iyileştiğinden emin olun.
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'lerininadd
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:
Sol üst köşedeki menü düğmesini ve ardından Kaynak grupları'nı seçin.
Listeden, oluşturduğunuz kaynak grubunu seçin.
Kaynak grubunu sil'i seçin.
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.
İlgili içerik
- Başarısız testleri tanılama hakkında daha fazla bilgi edinin
- Uygulamanızdaki performans sorunlarını belirlemek için sunucu tarafı ölçümlerini izleme
- Test sonuçlarını hizmet gereksinimlerinize göre doğrulamak için yük testi başarısız ölçütlerini tanımlama
- Azure Yük Testi için temel kavramlar hakkında daha fazla bilgi edinin.