Öğretici: Bir web uygulamasında performans sorunlarını belirlemek için yük testi çalıştırma
Bu öğreticide, Azure Load Testing Preview'ı kullanarak bir web uygulamasındaki performans sorunlarını belirlemeyi öğrenirsiniz. Örnek bir uygulama için yük testi Node.js.
Örnek uygulama, NoSQL Node.js etkileşimde bulunan bir web API'sini içerir. Web API'sini web uygulamalarına dağıt Azure App Service veritabanı olarak Cosmos DB kullanası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.
- Uygulamadaki performans sorunlarını belirleme.
- Performans sorunlarını kaldırın.
- Performans geliştirmelerini kontrol etmek için yük testini yeniden çalıştırın.
Önemli
Azure Load Testing şu anda ÖNIZLE aşamasındadır. Beta veya önizleme aşamasında olan ya da başka bir şekilde henüz genel kullanıma sunulmamış olan Azure özelliklerinde geçerli olan yasal koşullar için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- Bu öğretici için Azure CLI'sini yerel olarak çalıştırmanız gerekir. Azure CLI sürüm 2.2.0 veya sonraki bir sürümü yüklü olması gerekir. Sürümü bulmak için
az --versionkomutunu çalıştırın. CLI'sini yüklemeniz veya yükseltmeniz gerekirse bkz. Azure CLI'sini yükleme. - VS Code'u indirin ve yükleyin.
- Git'i indirme ve yükleme
Örnek uygulamayı dağıtma
Örnek uygulamanın yük testi öncesinde uygulamayı çalıştırmaya devam etmek gerekir. Bunu yapmak için Azure CLI komutlarını, Git komutlarını ve PowerShell komutlarını kullanın.
Windows PowerShell 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 kaynağını kopyalama.
git clone https://github.com/Azure-Samples/nodejs-appsvc-cosmosdb-bottleneck.gitÖrnek uygulama, Node.js web bileşeni ve Azure App Service DB veritabanından oluşan bir Cosmos uygulamasıdır. Repo, örnek uygulamayı Azure aboneliğinize dağıtan bir PowerShell betiği içerir. Ayrıca sonraki adımlarda kullanmak üzere bir Apache JMeter betiği de vardır.
Uygulamanın Node.js gidin ve Örnek uygulamayı PowerShell betiği kullanarak dağıtın.
cd nodejs-appsvc-cosmosdb-bottleneck .\deploymentscript.ps1İpucu
Linux/WSL PowerShell Core macOS üzerine yükleme yükleyebilirsiniz.
Yükledikten sonra, önceki komutu olarak
pwsh ./deploymentscript.ps1çalıştırabilirsiniz.İstendiğinde şunları sağlar:
- Azure abonelik kimliğiniz.
- Web uygulamanız için benzersiz bir ad.
- Konum. Varsayılan olarak konumu
eastusolur. Get-AzLocation komutunu çalıştırarak bölge kodlarını edinebilirsiniz.
Önemli
Web uygulaması adınız için yalnızca küçük harfler ve sayılar kullanın. Boşluk yok. Özel karakter yoktur.
Dağıtım tamam olduktan sonra bir tarayıcı penceresinde açarak çalışan
https://<yourappname>.azurewebsites.netörnek uygulamaya gidin.Uygulamanın bileşenlerini görmek için uygulamanın Azure portal ve oluşturduğunuz kaynak grubuna gidin.
Uygulama dağıtıldıktan ve çalıştırıldığından, ilk yük testini çalıştırmaya başlamaya devam edin.
Yük testini yapılandırma ve oluşturma
Bu bölümde, var olan bir Apache JMeter test betiği kullanarak bir yük testi oluşturabilirsiniz.
Apache JMeter betiği yapılandırma
Örnek uygulamanın kaynak repo, adlı bir Apache JMeter betiği SampleApp.jmx içerir. Bu betik, her test yinelemesi üzerinde üç API çağrısı yürüter:
add- Web uygulaması üzerinde ziyaretçi sayısı için Cosmos DB üzerinde bir veri ekleme işlemi yürüten.get- S sayımı almak için Cosmos veritabanından bir GET işlemi yürüten.lasttimestamp- Son kullanıcı web sitesine gittikleri zamandan bu yana zaman damgasını günceller.
Bu bölümde Apache JMeter betiği, önceki bölümde dağıtılan örnek web uygulamasının URL'si ile güncelleştirilmektedir.
Başlamadan önce, kopyalanan örnek uygulamanın dizininin VS Code.
Kopyalanan örnek uygulamanın dizinini VS Code.
cd nodejs-appsvc-cosmosdb-bottleneck code .SampleApp.jmxdosyasını açın.<stringProp name="HTTPSampler.domain">arayın.Dosyasında üç
<stringProp name="HTTPSampler.domain">örneği vardır.değerini, üç örnekte de yeni dağıtılan örnek uygulamanın URL'si ile değiştirin.
<stringProp name="HTTPSampler.domain">yourappname.azurewebsites.net</stringProp>Üç yerde de değeri güncelleştirin. Ön eki dahil
https://etme.Değişikliklerinizi kaydedin ve dosyayı kapatın.
Azure Load Testing kaynağını oluşturma
Yük Testi kaynağı, yük testi etkinlikleriniz için en üst düzey bir kaynaktır. Bu kaynak yük testlerini, test sonuçlarını ve diğer ilgili yapıtları görüntülemek ve yönetmek için merkezi bir yer sağlar.
Zaten bir Yük Testi kaynağınız varsa bu bölümü atlayıp Yük testi oluşturma bölümüne devam edin.
Henüz bir Yük Testi kaynağınız yoksa şimdi bir tane oluşturun:
Azure aboneliğinizin kimlik bilgilerini kullanarak Azure Portal oturum açın.
Portalın sol üst köşesindeki menü düğmesini seçin ve + kaynak oluştur' u seçin.
Azure Yük testini bulmak için arama çubuğunu kullanın.
Azure Yük testi seçin.
Azure Yük testi bölmesinde Oluştur' u seçin.
Yeni Azure Yük testi kaynağınızı yapılandırmak için aşağıdaki bilgileri sağlayın.
Alan Açıklama Abonelik Bu Azure Yük testi kaynağı için kullanmak istediğiniz Azure aboneliğini seçin. Kaynak Grubu Var olan bir kaynak grubunu seçin veya Yeni oluştur' u seçin ve ardından yeni kaynak grubu için benzersiz bir ad girin. Name Azure Yük testi kaynağınızı tanımlamak için benzersiz bir ad girin.
Ad \ /"" []: |<>+ =;,? * @ & veya boşluk gibi özel karakterler içeremez. Ad ' _ ' ile başlayamaz veya '. ' ya da '-' ile bitemez. Uzunluk 1 ile 64 karakter arasında olmalıdır.Konum Azure Yük testi kaynağınızın barındırılacağı coğrafi bir konum seçin.
Not
İsteğe bağlı olarak, Etiketler sekmesinde daha fazla ayrıntı yapılandırabilirsiniz. Etiketler, birden fazla kaynağa ve kaynak grubuna aynı etiketi uygulayarak kaynakları kategorilere ayırmanıza ve birleştirilmiş faturalandırmayı görüntülemenize olanak tanıyan ad/değer çiftleridir.
Kaynağı yapılandırmayı tamamladıktan sonra, gözden geçir + oluştur' u seçin.
Tüm yapılandırma ayarlarını gözden geçirin ve Oluştur ' u seçerek Azure Yük testi kaynağı dağıtımını başlatın.
İşlem tamamlandığında, bir dağıtım başarı iletisi görüntülenir.
Yeni kaynağı görüntülemek için Kaynağa Git' i seçin.
Azure Yük testi kaynağı sayfasında Access Control (IAM) öğesini seçin ve ardından rol ataması Ekle' yi seçin.
Yük testlerini Azure Yük testi kaynağında yönetebilmeniz için, doğru erişim izinlerine sahip olmanız gerekir.
Yük testi katılımcısı veya Yük testi sahibi rolünü Azure hesabınıza atamanız gerekir. Rol atama hakkında daha fazla bilgi için bkz. Azure Portal kullanarak Azure rolleri atama.
Önemli
Azure rolleri atamak için,
Microsoft.Authorization/roleAssignments/writeKullanıcı erişimi Yöneticisi veya sahibigibi izinleriniz olmalıdır. Rol atamalarının hesabınız için etkin olması birkaç dakika sürebilir. Kullanıcı arabiriminin güncelleştirilmiş izinleri yansıtması için Web sayfasını yenileyin.
Sonraki bölümde, örnek uygulama için Yük Testi kaynağında bir yük testi oluşturabilirsiniz.
Yük testi oluşturma
Yük testi kaynağına gidin ve komut çubuğunda Yeni test oluştur'ı seçin.
Temel bilgiler sekmesinde Test adı ve Test açıklaması bilgilerini girin. İsteğe bağlı olarak, oluşturduklarından sonra yük testini otomatik olarak başlatmak için Testi oluşturmadan sonra çalıştır kutusunu işaretlebilirsiniz.
Test planı sekmesinde JMeter betik test yöntemini seçin ve ardından kopyalanan örnek uygulama dizininden SampleApp.jmx test betiği'ne tıklayın. Ardından, dosyayı Upload Azure'a yüklemek ve yük testini yapılandırmak için Upload'yi seçin.
İsteğe bağlı olarak ek Apache JMeter yapılandırma dosyalarını seçerek karşıya yükleyebilirsiniz.
Yükle sekmesinde aşağıdaki ayrıntıları yapılandırabilirsiniz. Bu öğretici için varsayılan değerleri bırakın:
Ayar Değer Açıklama Altyapı örnekleri 1 Apache JMeter betiği yürüten paralel test altyapılarının sayısı.
İzleme sekmesinde, kaynak ölçümlerini izlemek istediğiniz uygulama bileşenlerini belirtin. Uygulama bileşenleri listesini yönetmek için Ekle/değiştir'i seçin.
Gözden geçir + oluştur'a tıklayın, tüm ayarları gözden geçirin ve Oluştur'a tıklayın.
Yük testini Azure portal
Bu bölümde, daha önce oluşturduğunuz Azure portal testi el ile başlatmak için Azure portal'i kullanmalısınız. Oluşturulduktan sonra testi Çalıştır kutusunu denetlediyseniz, test zaten çalışıyor olur.
Testlerin listesini görüntülemek için testler ' i seçin ve ardından daha önce oluşturduğunuz testi seçin.
İpucu
Test sayısını sınırlandırmak için arama kutusunu ve zaman aralığı filtresini kullanabilirsiniz.
Test çalıştırmaları sayfasında Çalıştır veya Test Çalıştır' ı seçin.
Yük testini başlatmak için Özet Çalıştır sayfasında Çalıştır ' ı seçin. Ardından test çalıştırmalarının listesini görürsünüz.
Azure Yük testi, uygulamanın sunucu ölçümlerini panoda izlemeye ve görüntülemeye başlar.
Test çalışırken akış istemci tarafı ölçümlerini görebilirsiniz. Varsayılan olarak, sonuçlar her beş saniyede bir otomatik olarak yenilenir.
Grafikleri özelleştirmek için, birden çok filtre uygulayabilir veya sonuçları farklı yüzdebirlik değeri toplayabilirsiniz.
İpucu
Durdur' a tıklayarak Azure Portal kullanıcı arabiriminden istediğiniz zaman yük testini durdurabilirsiniz.
Sonraki bölüme geçmeden önce yük testinin tam olarak bitmesini bekleyin.
Performans sorunlarını tanımlama
Bu bölümde, uygulamadaki performans sorunlarını belirlemek için yük testi sonuçlarını çözümlüreceğiz. Sorunun kök nedenini öğrenmek için hem istemci tarafı hem de sunucu tarafı ölçümlerini inceleyin.
İlk olarak, istemci tarafı ölçümlerine göz atın. Ve API isteklerinin yanıt süresi ölçüsünün,
addgetAPI 'den daha yüksek olduğunu fark edeceksinizlasttimestamp.
API 'nin diğer API 'lerden daha az hata olduğu hatalar için benzer bir model görebilirsiniz
lasttimestamp.
Ve API 'lerin sonuçları
addgetbenzerdir, ancaklasttimestampAPI farklı şekilde davranır. Hem hem deaddgetAPI 'ler bir veritabanı erişimi içerdiğinden, nedeni veritabanıyla ilgili olabilir.Bu sorunu daha ayrıntılı incelemek için, sunucu tarafı ölçümleri panosu bölümüne gidin.
sunucu tarafı ölçümleri, Azure uygulama bileşenleriniz hakkında ayrıntılı bilgiler gösterir: Plan Azure App Service Azure App Service Web uygulaması ve Azure Cosmos DB.
Azure App Service planı ölçümlerinde, CPU yüzdesi ve bellek yüzdesi ölçümlerinin kabul edilebilir bir aralık dahilinde olduğunu görebilirsiniz.
şimdi Cosmos DB sunucu tarafı ölçümlerine göz atın.
NORMALLEŞTIRILMIŞ ru tüketim ölçümünün, veritabanının hızlı bir şekilde %100 kaynak kullanımında çalıştığını gösterdiğini fark edeceksiniz. Yüksek kaynak kullanımı veritabanı azaltma hatalarına neden olmuş olabilir ve
addve Web API 'leri için yanıt sürelerini artırabilirget.ayrıca, Azure Cosmos DB örneği için sağlanan aktarım hızı ölçüsünün en fazla 400 ru iş hızına sahip olduğunu görebilirsiniz. Veritabanının sağlanan verimini artırarak performans sorunu çözülebilir.
Sonraki bölümde, veritabanı sağlanan aktarım hızını arttıracaksınız ve uygulama performansı darboğazının çözümlenmiş olup olmadığını doğrulayacaksınız.
Veritabanı verimini 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ı arttıracaksınız.
örnek uygulama dağıtımının bir parçası olarak sağladığınız Cosmos DB kaynağına gidin.
Veri Gezgini sekmesini seçin.
ölçek & Ayarlar seçeneğini belirleyin ve üretilen iş değerini 1200 olarak güncelleştirin.
Değişiklikleri onaylamak için Kaydet ' i seçin.
Performans geliştirmelerini doğrulama
Veritabanı verimini artırdığınıza göre, yük testini yeniden çalıştıracaksınız ve performans sonuçlarının iyileştirdiğini doğrulayacaksınız.
Test çalıştırması ayrıntıları sayfasına dönün, yeniden Çalıştır ' ı seçin ve ardından Özet Çalıştır sayfasında Çalıştır ' ı seçin.
Durum sütunuyla, sağlama, yürütme ve bitti durumuna geçiş yapan yeni bir test çalıştırması girişi görürsünüz. Herhangi bir zamanda yük testinin nasıl ilerlediğini izlemek için test çalıştırması öğesini seçin.
Yük testi tamamlandıktan sonra, yanıt süresini ve istemci tarafı ölçümlerinin hatalarını kontrol edin.
daha sonra Azure Cosmos DB için sunucu tarafı ölçümlerini denetleyin ve performansın iyileştirildiğinden emin olun.
normalleştirilmiş RU tüketiminin Cosmos DB artık %100 ' un altında olduğunu fark edeceksiniz.
Veritabanının ölçek ayarlarını değiştirdikten sonra şu şekilde görürsünüz:
addVegetAPI 'lerinin yanıt süresi geliştirilmiştir.- Normalleştirilmiş RU tüketimi, maksimum sınırın altında iyi kalır.
Sonuç olarak, uygulamanızın genel performansı geliştirilmiştir.
Kaynakları temizleme
Önemli
Oluşturduğunuz kaynakları diğer Azure Load Testing öğreticileri ve nasıl oluşturulduğunda makalelerde önkoşul olarak kullanabilirsiniz.
Oluşturduğunuz kaynaklardan herhangi birini kullanmayı planlasanız, ek ücret ödemeden bunları silin.
Azure portalında:
Sol üst köşedeki menü düğmesini ve ardından Kaynak grupları'ı 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.
Alternatif olarak, Azure CLI'sini kullanabilirsiniz.
az group delete --name <yourresourcegroup>Kaynak grubunun silinmesinin içindeki tüm kaynakların silinecek olduğunu unutmayın.
Sonraki adımlar
Azure Pipelines veya GitHub eylemleri kullanarak otomatik regresyon testi iş akışını ayarlamayı öğrenmek için sonraki öğreticiye ilerleyin.