برنامج تعليمي: قم بإجراء اختبار تحميل لتحديد معوقات الأداء في تطبيق ويب

في هذا البرنامج التعليمي، ستتعلم كيفية تحديد اختناقات الأداء في تطبيق ويب باستخدام Azure Load Testing. يمكنك محاكاة التحميل لنموذج تطبيق ويب Node.js، ثم استخدام لوحة معلومات اختبار التحميل لتحليل المقاييس من جانب العميل والخادم.

يتكون نموذج التطبيق من واجهة برمجة تطبيقات ويب Node.js، والتي تتفاعل مع قاعدة بيانات NoSQL. يمكنك نشر واجهة برمجة تطبيقات الويب إلى تطبيقات ويب Azure App Service واستخدام Azure Cosmos DB كقاعدة بيانات.

في هذا البرنامج التعليمي، تتعلم كيفية:

  • نشر نموذج التطبيق.
  • إنشاء اختبار تحميل وتشغيله.
  • إضافة مكونات تطبيق Azure إلى اختبار التحميل.
  • تحديد ازدحامات الأداء باستخدام لوحة معلومات اختبار التحميل.

المتطلبات الأساسية

التحقق من المتطلبات الأساسية

قبل البدء، تحقق من صحة بيئتك:

انشر نموذج التطبيق

في هذا البرنامج التعليمي، تقوم بإنشاء تحميل مقابل نموذج تطبيق ويب تقوم بنشره في Azure App Service. استخدم أوامر Azure CLI والأوامر Git والأوامر PowerShell لنشر نموذج التطبيق في اشتراك Azure الخاص بك.

  1. افتح Windows PowerShell، وسجل الدخول إلى Azure، وقم بتعيين الاشتراك:

    az login
    az account set --subscription <your-Azure-Subscription-ID>
    
  2. استنساخ نموذج مستودع مصدر التطبيق:

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

    نموذج التطبيق هو تطبيق Node.js يتكون من مكون ويب Azure App Service وقاعدة بيانات Azure Cosmos DB. يتضمن المستودع برنامج PowerShell النصي الذي ينشر نموذج التطبيق إلى اشتراك Azure الخاص بك. كما يحتوي على برنامج نصي Apache JMeter ستستخدمه في الخطوات اللاحقة.

  3. انتقل إلى دليل تطبيق Node.js وانشر نموذج التطبيق باستخدام هذا البرنامج النصي PowerShell:

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

    تلميح

    يمكنك تثبيت PowerShell على Linux/WSL أو macOS.

    بعد تثبيته، يمكنك تشغيل الأمر السابق ك pwsh ./deploymentscript.ps1.

  4. في المطالبة، قم بتوفير:

    • معرّف اشتراك Azure.
    • اسم فريد لتطبيق الويب الخاص بك.
    • موقع. بشكل افتراضي، الموقع هو eastus. يمكنك الحصول على رموز المنطقة عن طريق تشغيل الأمر Get-AzLocation .

    هام

    بالنسبة إلى اسم تطبيق الويب الخاص بك، استخدم الأحرف الصغيرة والأرقام فقط. لا تستخدم المسافات أو الأحرف الخاصة.

  5. بعد انتهاء النشر، انتقل إلى نموذج التطبيق قيد التشغيل عن طريق فتحه https://<yourappname>.azurewebsites.net في نافذة المستعرض.

الآن بعد أن تم نشر نموذج التطبيق وتشغيله، يمكنك إنشاء مورد اختبار تحميل Azure واختبار التحميل.

إنشاء اختبار تحميل

في هذا البرنامج التعليمي، تقوم بإنشاء اختبار تحميل باستخدام Azure CLI عن طريق تحميل برنامج نصي لاختبار JMeter (jmx ملف). يحتوي مستودع نموذج التطبيق بالفعل على ملف تكوين اختبار التحميل والبرنامج النصي لاختبار JMeter.

لإنشاء اختبار تحميل باستخدام مدخل Microsoft Azure، اتبع الخطوات الواردة في التشغيل السريع: إنشاء اختبار تحميل باستخدام برنامج نصي JMeter.

اتبع هذه الخطوات لإنشاء مورد اختبار تحميل Azure واختبار تحميل باستخدام Azure CLI:

  1. افتح نافذة طرفية وأدخل الأمر التالي لتسجيل الدخول إلى اشتراك Azure.

    az login
    
  2. انتقل إلى نموذج دليل التطبيق.

    cd nodejs-appsvc-cosmosdb-bottleneck
    
  3. إنشاء مجموعة موارد لمورد اختبار تحميل Azure.

    اختياريا، يمكنك أيضا إعادة استخدام مجموعة الموارد من نموذج التطبيق الذي قمت بنشره مسبقا.

    <load-testing-resource-group-name> استبدل العنصر النائب للنص باسم مجموعة الموارد.

    resourceGroup="<load-testing-resource-group-name>"
    location="East US"
    
    az group create --name $resourceGroup --location $location
    
  4. إنشاء مورد اختبار تحميل Azure باستخدام az load create الأمر .

    <load-testing-resource-name> استبدل العنصر النائب للنص باسم مورد اختبار التحميل.

    # 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. قم بإنشاء اختبار تحميل لمحاكاة التحميل مقابل نموذج التطبيق الخاص بك باستخدام az load test create الأمر .

    <web-app-hostname> استبدل العنصر النائب للنص باسم مضيف App Service الخاص بنموذج التطبيق. هذه القيمة هي من النموذج myapp.azurewebsites.net. لا تقم بتضمين https:// جزء عنوان URL.

    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
    

    يستخدم Sampleapp.yaml هذا الأمر ملف تكوين اختبار التحميل، الذي يشير إلى SampleApp.jmx البرنامج النصي لاختبار JMeter. يمكنك استخدام معلمة سطر الأوامر لتمرير نموذج اسم مضيف التطبيق إلى اختبار التحميل.

لديك الآن مورد اختبار تحميل Azure واختبار تحميل لإنشاء تحميل مقابل نموذج تطبيق الويب في اشتراك Azure الخاص بك.

إضافة مكونات تطبيق Azure لمراقبة التطبيق

يتيح لك اختبار تحميل Azure مراقبة مقاييس الموارد لمكونات Azure للتطبيق الخاص بك. من خلال تحليل هذه المقاييس من جانب الخادم، يمكنك تحديد مشكلات الأداء والاستقرار في تطبيقك مباشرة من لوحة معلومات Azure Load Testing.

في هذا البرنامج التعليمي، يمكنك إضافة مكونات Azure لنموذج التطبيق الذي قمت بنشره على Azure، مثل خدمة التطبيق وحساب Cosmos DB والمزيد.

لإضافة مكونات تطبيق Azure لنموذج التطبيق إلى اختبار التحميل الخاص بك:

  1. في مدخل Microsoft Azure، انتقل إلى مورد اختبار تحميل Azure.

  2. في الجزء الأيمن، حدد Tests لعرض قائمة اختبارات التحميل

  3. حدد خانة الاختيار بجوار اختبار التحميل، ثم حدد تحرير.

    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. انتقل إلى علامة التبويب Monitoring ، ثم حدد Add/Modify.

  5. حدد خانات الاختيار الخاصة بنموذج التطبيق الذي قمت بنشره مسبقا، ثم حدد تطبيق.

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

    تلميح

    يمكنك استخدام عامل تصفية مجموعة الموارد لعرض موارد Azure فقط في نموذج مجموعة موارد التطبيق.

  6. حدد تطبيق لحفظ التغييرات على تكوين اختبار التحميل.

لقد نجحت في إضافة مكونات تطبيق Azure لعينة التطبيق إلى اختبار التحميل لتمكين مراقبة المقاييس من جانب الخادم أثناء تشغيل اختبار التحميل.

تشغيل اختبار التحميل

يمكنك الآن تشغيل اختبار التحميل لمحاكاة التحميل مقابل نموذج التطبيق الذي قمت بنشره في اشتراك Azure الخاص بك. في هذا البرنامج التعليمي، يمكنك تشغيل اختبار التحميل من داخل مدخل Microsoft Azure. بدلا من ذلك، يمكنك تكوين سير عمل CI/CD لتشغيل اختبار التحميل.

لتشغيل اختبار التحميل في مدخل Microsoft Azure:

  1. في مدخل Microsoft Azure، انتقل إلى مورد اختبار تحميل Azure.

  2. في الجزء الأيمن، حدد Tests لعرض قائمة اختبارات التحميل

  3. حدد اختبار التحميل من القائمة لعرض تفاصيل الاختبار وقائمة عمليات تشغيل الاختبار.

  4. حدد Run، ثم Run مرة أخرى لبدء اختبار التحميل.

    اختياريا، يمكنك إدخال وصف تشغيل اختبار.

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

    عند تشغيل اختبار تحميل، يقوم Azure Load Testing بنشر البرنامج النصي لاختبار JMeter وأي ملفات إضافية إلى مثيل (مثيلات) محرك الاختبار، ثم يبدأ اختبار التحميل.

  5. عند بدء اختبار التحميل، يجب أن تشاهد لوحة معلومات اختبار التحميل.

    إذا لم تظهر لوحة المعلومات، يمكنك تحديد تحديث ثم تحديد تشغيل الاختبار من القائمة.

    تقدم لوحة معلومات اختبار التحميل تفاصيل تشغيل الاختبار، مثل المقاييس من جانب العميل ومقاييس التطبيق من جانب الخادم. يتم تحديث الرسوم البيانية على لوحة المعلومات تلقائيا.

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

    يمكنك تطبيق عوامل تصفية متعددة أو تجميع النتائج على النسب المئوية المختلفة لتخصيص المخططات.

    تلميح

    يمكنك إيقاف اختبار التحميل في أي وقت من مدخل Microsoft Azure عن طريق تحديد Stop.

انتظر حتى ينتهي اختبار التحميل بالكامل قبل المتابعة إلى القسم التالي.

استخدام المقاييس من جانب الخادم لتحديد اختناقات الأداء

في هذا القسم، يمكنك تحليل نتائج اختبار التحميل لتحديد اختناقات الأداء في التطبيق. فحص كل من المقاييس من جانب العميل والخادم لتحديد السبب الجذري للمشكلة.

  1. أولا، انظر إلى المقاييس من جانب العميل. لاحظت أن النسبة المئوية 90 لمقياس وقت الاستجابة add لطلبات واجهة برمجة التطبيقات و get أعلى من تلك الخاصة بواجهة lasttimestamp برمجة التطبيقات.

    Screenshot that shows the client-side metrics.

    يمكنك مشاهدة نمط مشابه للأخطاء، حيث تحتوي واجهة برمجة التطبيقات على lasttimestamp أخطاء أقل من واجهات برمجة التطبيقات الأخرى.

    Screenshot that shows the error chart.

    نتائج واجهات add برمجة التطبيقات و get متشابهة، بينما lasttimestamp تتصرف واجهة برمجة التطبيقات بشكل مختلف. قد يكون السبب مرتبطا بقاعدة البيانات، لأن كل من add واجهات برمجة التطبيقات و get تتضمن الوصول إلى قاعدة البيانات.

  2. للتحقيق في هذا الازدحام بمزيد من التفصيل، مرر لأسفل إلى قسم لوحة معلومات المقاييس من جانب الخادم.

    تعرض المقاييس من جانب الخادم معلومات مفصلة حول مكونات تطبيق Azure: خطة Azure App Service وتطبيق ويب Azure App Service وAzure Cosmos DB.

    Screenshot that shows the Azure App Service plan metrics.

    في مقاييس خطة Azure App Service، يمكنك أن ترى أن مقاييس النسبة المئوية لوحدة المعالجة المركزية ونسبة الذاكرة ضمن نطاق مقبول.

  3. الآن، انظر إلى المقاييس من جانب خادم Azure Cosmos DB.

    Screenshot that shows Azure Cosmos DB metrics.

    لاحظ أن مقياس Normalized RU Consumption يظهر أن قاعدة البيانات كانت تعمل بسرعة عند استخدام الموارد بنسبة 100٪. قد يتسبب الاستخدام العالي للموارد في حدوث أخطاء في تقييد قاعدة البيانات. كما قد يزيد من أوقات الاستجابة add لواجهات برمجة تطبيقات الويب و get .

    يمكنك أيضا أن ترى أن مقياس معدل النقل المقدم لمثيل Azure Cosmos DB لديه الحد الأقصى لمعدل النقل 400 وحدة طلب. قد تؤدي زيادة معدل النقل المقدم لقاعدة البيانات إلى حل مشكلة الأداء.

زيادة معدل نقل قاعدة البيانات

في هذا القسم، يمكنك تخصيص المزيد من الموارد إلى قاعدة البيانات لحل ازدحام الأداء.

بالنسبة إلى Azure Cosmos DB، قم بزيادة إعداد مقياس RU لقاعدة البيانات:

  1. انتقل إلى مورد Azure Cosmos DB الذي قمت بتوفيره كجزء من نموذج نشر التطبيق.

  2. حدد علامة التبويب Data Explorer.

    Screenshot that shows Data Explorer tab.

  3. حدد تغيير الحجم الإعدادات، وقم بتحديث قيمة معدل النقل إلى 1200.

    Screenshot that shows the updated Azure Cosmos DB scale settings.

  4. حدد حفظ لتأكيد التغييرات.

التحقق من صحة تحسينات الأداء

الآن بعد أن قمت بزيادة معدل نقل قاعدة البيانات، أعد تشغيل اختبار التحميل وتحقق من تحسين نتائج الأداء:

  1. في لوحة معلومات تشغيل الاختبار، حدد Rerun، ثم حدد Rerun في جزء Rerun test .

    Screenshot that shows selections for running the load test.

    يمكنك مشاهدة إدخال تشغيل اختبار جديد مع عمود الحالة الذي يمر عبر حالات Provisioning و Executing و Done. في أي وقت، حدد تشغيل الاختبار لمراقبة كيفية تقدم اختبار التحميل.

  2. بعد انتهاء اختبار التحميل، تحقق من نتائج وقت الاستجابة ونتائج الأخطاء للمقاييس من جانب العميل.

  3. تحقق من المقاييس من جانب الخادم ل Azure Cosmos DB وتأكد من تحسين الأداء.

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

    قيمة استهلاك وحدة الطلب (RU) التي تمت تسويتها في Azure Cosmos DB أقل بكثير من 100٪.

الآن بعد أن قمت بتحديث إعدادات المقياس لقاعدة البيانات، يمكنك أن ترى ما يلي:

  • تم تحسين وقت الاستجابة add لواجهات برمجة التطبيقات و get .
  • ولا يزال استهلاك وحدة الطلب الطبيعي أقل بكثير من الحد المسموح به.

ونتيجة لذلك، تحسن الأداء العام للتطبيق الخاص بك.

تنظيف الموارد

هام

يمكنك إعادة استخدام مورد Azure Load Testing الذي قمت بإنشائه لبرامج تعليمية أخرى في Azure Load Testing ومقالات إرشادية.

إذا كنت لا تخطط لاستخدام أي من الموارد التي قمت بإنشائها، فاحذفها حتى لا تتحمل أي رسوم إضافية. إذا قمت بنشر نموذج التطبيق في مجموعة موارد مختلفة، فقد تحتاج إلى تكرار الخطوات التالية.

لحذف الموارد باستخدام مدخل Microsoft Azure:

  1. حدد زر القائمة في الزاوية العلوية اليمنى، ثم حدد Resource groups.

  2. من القائمة، حدد مجموعة الموارد التي أنشأتها.

  3. حدد Delete resource group. Screenshot of the selections to delete a resource group in the Azure portal.

  4. أدخل اسم مجموعة الموارد. ثم حدد حذف.

لحذف الموارد باستخدام Azure CLI، أدخل الأمر التالي:

az group delete --name <yourresourcegroup>

تذكر أن حذف مجموعة الموارد يؤدي إلى حذف كافة الموارد الموجودة داخلها.