Öğ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 --version komutunu ç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.

  1. Windows PowerShell 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 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.

  3. 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.

  4. İstendiğinde şunları sağlar:

    • Azure abonelik kimliğiniz.
    • Web uygulamanız için benzersiz bir ad.
    • Konum. Varsayılan olarak konumu eastus olur. 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.

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

  6. Uygulamanın bileşenlerini görmek için uygulamanın Azure portal ve oluşturduğunuz kaynak grubuna gidin.

    Azure Kaynak Grupları listesini gösteren ekran görüntüsü.

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.

  1. Kopyalanan örnek uygulamanın dizinini VS Code.

    cd nodejs-appsvc-cosmosdb-bottleneck
    code .
    
  2. SampleApp.jmx dosyasını açın.

  3. <stringProp name="HTTPSampler.domain"> arayın.

    Dosyasında üç <stringProp name="HTTPSampler.domain"> örneği vardır.

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

  5. 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:

  1. Azure aboneliğinizin kimlik bilgilerini kullanarak Azure Portal oturum açın.

  2. Portalın sol üst köşesindeki menü düğmesini seçin ve + kaynak oluştur' u seçin.

    + Kaynak oluştur ' a gösteren ekran görüntüsü.

  3. Azure Yük testini bulmak için arama çubuğunu kullanın.

  4. Azure Yük testi seçin.

  5. Azure Yük testi bölmesinde Oluştur' u seçin.

    Azure Yük testi oluşturma sayfasını gösteren ekran görüntüsü.

  6. 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.

    Azure Yük testi kaynağı oluştururken temel kavramlar sekmelerini gösteren ekran görüntüsü.

    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.

  7. Kaynağı yapılandırmayı tamamladıktan sonra, gözden geçir + oluştur' u seçin.

  8. 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.

  9. Yeni kaynağı görüntülemek için Kaynağa Git' i seçin.

    Dağıtım tamamlama ekranını gösteren ekran görüntüsü.

  10. 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.

    Erişim denetiminin nasıl yapılandırılacağını gösteren ekran görüntüsü.

    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.

    Rol atama ekranını gösteren ekran görüntüsü.

    Önemli

    Azure rolleri atamak için, Microsoft.Authorization/roleAssignments/write Kullanı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

  1. Yük testi kaynağına gidin ve komut çubuğunda Yeni test oluştur'ı seçin.

    Yeni test oluştur'ları gösteren ekran görüntüsü.

  2. 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.

    Yeni bir test oluştururken temel bilgiler sekmesini gösteren ekran görüntüsü.

  3. 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.

    Test planı sekmesini ve Apache JMeter betiği yüklemeyi gösteren ekran görüntüsü.

    İsteğe bağlı olarak ek Apache JMeter yapılandırma dosyalarını seçerek karşıya yükleyebilirsiniz.

  4. 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ı.

    Yeni test oluştururken Yükle sekmesini gösteren ekran görüntüsü.

  5. İ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.

    Yeni bir test oluştururken İzleme sekmesini gösteren ekran görüntüsü.

    Yük testi sırasında izlemek için Azure kaynaklarının nasıl ekleniyor olduğunu gösteren ekran görüntüsü.

    İzlemek istediğiniz Azure kaynaklarının listesinin yer alan İzleme sekmesini gösteren ekran görüntüsü.

  6. Gözden geçir + oluştur'a tıklayın, tüm ayarları gözden geçirin ve Oluştur'a tıklayın.

    Yeni bir test oluştururken Gözden geçir ve oluştur sekmesini gösteren ekran görüntüsü.

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.

  1. Testlerin listesini görüntülemek için testler ' i seçin ve ardından daha önce oluşturduğunuz testi seçin.

    Testlerin listesini gösteren ekran görüntüsü.

    İpucu

    Test sayısını sınırlandırmak için arama kutusunu ve zaman aralığı filtresini kullanabilirsiniz.

  2. Test çalıştırmaları sayfasında Çalıştır veya Test Çalıştır' ı seçin.

    Testin nasıl çalıştırılacağını gösteren ekran görüntüsü.

  3. 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.

    Özet Çalıştır sayfasını gösteren ekran görüntüsü.

    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.

    Test sonuçları panosunu gösteren ekran görüntüsü.

    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.

  1. İlk olarak, istemci tarafı ölçümlerine göz atın. Ve API isteklerinin yanıt süresi ölçüsünün, add get API 'den daha yüksek olduğunu fark edeceksiniz lasttimestamp .

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

    API 'nin diğer API 'lerden daha az hata olduğu hatalar için benzer bir model görebilirsiniz lasttimestamp .

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

    Ve API 'lerin sonuçları add get benzerdir, ancak lasttimestamp API farklı şekilde davranır. Hem hem de add get API 'ler bir veritabanı erişimi içerdiğinden, nedeni veritabanıyla ilgili olabilir.

  2. 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çümlerini gösteren ekran görüntüsü.

    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.

  3. şimdi Cosmos DB sunucu tarafı ölçümlerine göz atın.

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

    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 add ve Web API 'leri için yanıt sürelerini artırabilir get .

    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.

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

  2. Veri Gezgini sekmesini seçin.

    Cosmos DB ölçek ayarlarını gösteren ekran görüntüsü.

  3. ölçek & Ayarlar seçeneğini belirleyin ve üretilen iş değerini 1200 olarak güncelleştirin.

    güncelleştirilmiş 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 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.

  1. 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.

    Yük testinin nasıl çalıştırılacağını gösteren ekran görüntüsü.

    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.

  2. Yük testi tamamlandıktan sonra, yanıt süresini ve istemci tarafı ölçümlerinin hatalarını kontrol edin.

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

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

    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:

  • addVe get API '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:

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

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

    3. Kaynak grubunu sil'i seçin.

      Azure portalda kaynak grubu silmek için yapılan seçimlerin ekran görüntüsü.

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