برنامج تعليمي: قم بإجراء اختبار تحميل لتحديد معوقات الأداء في تطبيق ويب
في هذا البرنامج التعليمي، ستتعلم كيفية تحديد اختناقات الأداء في تطبيق ويب باستخدام Azure Load Testing. يمكنك محاكاة التحميل لنموذج تطبيق ويب Node.js، ثم استخدام لوحة معلومات اختبار التحميل لتحليل المقاييس من جانب العميل والخادم.
يتكون نموذج التطبيق من واجهة برمجة تطبيقات ويب Node.js، والتي تتفاعل مع قاعدة بيانات NoSQL. يمكنك نشر واجهة برمجة تطبيقات الويب إلى تطبيقات ويب Azure App Service واستخدام Azure Cosmos DB كقاعدة بيانات.
في هذا البرنامج التعليمي، تتعلم كيفية:
- نشر نموذج التطبيق.
- إنشاء اختبار تحميل وتشغيله.
- إضافة مكونات تطبيق Azure إلى اختبار التحميل.
- تحديد ازدحامات الأداء باستخدام لوحة معلومات اختبار التحميل.
المتطلبات الأساسية
- حساب Azure مع اشتراك نشط. في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.
- Azure CLI، مثبت على جهاز الكمبيوتر الشخصي.
- الإصدار 2.2.0 من Azure CLI أو أحدث. قم بتشغيل
az --version
للعثور على الإصدار المثبت على الكمبيوتر. إذا كنت بحاجة إلى تثبيت أو ترقية Azure CLI، راجع كيفية تثبيت Azure CLI. - تعليمة Visual Studio البرمجية. إذا لم يكن لديك، فقم بتنزيله وتثبيته.
- Git. إذا لم يكن لديك، فقم بتنزيله وتثبيته.
التحقق من المتطلبات الأساسية
قبل البدء، تحقق من صحة بيئتك:
سجل الدخول إلى مدخل Microsoft Azure وتحقق من أن اشتراكك نشط.
تحقق من إصدار Azure CLI في المحطة الطرفية أو نافذة الأوامر عن طريق تشغيل
az --version
. للحصول على أحدث إصدار، راجع ملاحظات الإصدار الأخيرة .في حال عدم امتلاك أحدث إصدار، فيمكن تحديث التثبيت باتباع دليل تثبيت نظام التشغيل أو النظام الأساسي لديك.
انشر نموذج التطبيق
في هذا البرنامج التعليمي، تقوم بإنشاء تحميل مقابل نموذج تطبيق ويب تقوم بنشره في Azure App Service. استخدم أوامر Azure CLI والأوامر Git والأوامر PowerShell لنشر نموذج التطبيق في اشتراك Azure الخاص بك.
افتح Windows PowerShell، وسجل الدخول إلى Azure، وقم بتعيين الاشتراك:
az login az account set --subscription <your-Azure-Subscription-ID>
استنساخ نموذج مستودع مصدر التطبيق:
git clone https://github.com/Azure-Samples/nodejs-appsvc-cosmosdb-bottleneck.git
نموذج التطبيق هو تطبيق Node.js يتكون من مكون ويب Azure App Service وقاعدة بيانات Azure Cosmos DB. يتضمن المستودع برنامج PowerShell النصي الذي ينشر نموذج التطبيق إلى اشتراك Azure الخاص بك. كما يحتوي على برنامج نصي Apache JMeter ستستخدمه في الخطوات اللاحقة.
انتقل إلى دليل تطبيق Node.js وانشر نموذج التطبيق باستخدام هذا البرنامج النصي PowerShell:
cd nodejs-appsvc-cosmosdb-bottleneck .\deploymentscript.ps1
في المطالبة، قم بتوفير:
- معرّف اشتراك Azure.
- اسم فريد لتطبيق الويب الخاص بك.
- موقع. بشكل افتراضي، الموقع هو
eastus
. يمكنك الحصول على رموز المنطقة عن طريق تشغيل الأمر Get-AzLocation .
هام
بالنسبة إلى اسم تطبيق الويب الخاص بك، استخدم الأحرف الصغيرة والأرقام فقط. لا تستخدم المسافات أو الأحرف الخاصة.
بعد انتهاء النشر، انتقل إلى نموذج التطبيق قيد التشغيل عن طريق فتحه
https://<yourappname>.azurewebsites.net
في نافذة المستعرض.
الآن بعد أن تم نشر نموذج التطبيق وتشغيله، يمكنك إنشاء مورد اختبار تحميل Azure واختبار التحميل.
إنشاء اختبار تحميل
في هذا البرنامج التعليمي، تقوم بإنشاء اختبار تحميل باستخدام Azure CLI عن طريق تحميل برنامج نصي لاختبار JMeter (jmx
ملف). يحتوي مستودع نموذج التطبيق بالفعل على ملف تكوين اختبار التحميل والبرنامج النصي لاختبار JMeter.
لإنشاء اختبار تحميل باستخدام مدخل Microsoft Azure، اتبع الخطوات الواردة في التشغيل السريع: إنشاء اختبار تحميل باستخدام برنامج نصي JMeter.
اتبع هذه الخطوات لإنشاء مورد اختبار تحميل Azure واختبار تحميل باستخدام Azure CLI:
افتح نافذة طرفية وأدخل الأمر التالي لتسجيل الدخول إلى اشتراك Azure.
az login
انتقل إلى نموذج دليل التطبيق.
cd nodejs-appsvc-cosmosdb-bottleneck
إنشاء مجموعة موارد لمورد اختبار تحميل Azure.
اختياريا، يمكنك أيضا إعادة استخدام مجموعة الموارد من نموذج التطبيق الذي قمت بنشره مسبقا.
<load-testing-resource-group-name>
استبدل العنصر النائب للنص باسم مجموعة الموارد.resourceGroup="<load-testing-resource-group-name>" location="East US" az group create --name $resourceGroup --location $location
إنشاء مورد اختبار تحميل 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
قم بإنشاء اختبار تحميل لمحاكاة التحميل مقابل نموذج التطبيق الخاص بك باستخدام
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 لنموذج التطبيق إلى اختبار التحميل الخاص بك:
في الجزء الأيمن، حدد Tests لعرض قائمة اختبارات التحميل
حدد خانة الاختيار بجوار اختبار التحميل، ثم حدد تحرير.
انتقل إلى علامة التبويب Monitoring ، ثم حدد Add/Modify.
حدد خانات الاختيار الخاصة بنموذج التطبيق الذي قمت بنشره مسبقا، ثم حدد تطبيق.
تلميح
يمكنك استخدام عامل تصفية مجموعة الموارد لعرض موارد Azure فقط في نموذج مجموعة موارد التطبيق.
حدد تطبيق لحفظ التغييرات على تكوين اختبار التحميل.
لقد نجحت في إضافة مكونات تطبيق Azure لعينة التطبيق إلى اختبار التحميل لتمكين مراقبة المقاييس من جانب الخادم أثناء تشغيل اختبار التحميل.
تشغيل اختبار التحميل
يمكنك الآن تشغيل اختبار التحميل لمحاكاة التحميل مقابل نموذج التطبيق الذي قمت بنشره في اشتراك Azure الخاص بك. في هذا البرنامج التعليمي، يمكنك تشغيل اختبار التحميل من داخل مدخل Microsoft Azure. بدلا من ذلك، يمكنك تكوين سير عمل CI/CD لتشغيل اختبار التحميل.
لتشغيل اختبار التحميل في مدخل Microsoft Azure:
في الجزء الأيمن، حدد Tests لعرض قائمة اختبارات التحميل
حدد اختبار التحميل من القائمة لعرض تفاصيل الاختبار وقائمة عمليات تشغيل الاختبار.
حدد Run، ثم Run مرة أخرى لبدء اختبار التحميل.
اختياريا، يمكنك إدخال وصف تشغيل اختبار.
عند تشغيل اختبار تحميل، يقوم Azure Load Testing بنشر البرنامج النصي لاختبار JMeter وأي ملفات إضافية إلى مثيل (مثيلات) محرك الاختبار، ثم يبدأ اختبار التحميل.
عند بدء اختبار التحميل، يجب أن تشاهد لوحة معلومات اختبار التحميل.
إذا لم تظهر لوحة المعلومات، يمكنك تحديد تحديث ثم تحديد تشغيل الاختبار من القائمة.
تقدم لوحة معلومات اختبار التحميل تفاصيل تشغيل الاختبار، مثل المقاييس من جانب العميل ومقاييس التطبيق من جانب الخادم. يتم تحديث الرسوم البيانية على لوحة المعلومات تلقائيا.
يمكنك تطبيق عوامل تصفية متعددة أو تجميع النتائج على النسب المئوية المختلفة لتخصيص المخططات.
تلميح
يمكنك إيقاف اختبار التحميل في أي وقت من مدخل Microsoft Azure عن طريق تحديد Stop.
انتظر حتى ينتهي اختبار التحميل بالكامل قبل المتابعة إلى القسم التالي.
استخدام المقاييس من جانب الخادم لتحديد اختناقات الأداء
في هذا القسم، يمكنك تحليل نتائج اختبار التحميل لتحديد اختناقات الأداء في التطبيق. فحص كل من المقاييس من جانب العميل والخادم لتحديد السبب الجذري للمشكلة.
أولا، انظر إلى المقاييس من جانب العميل. لاحظت أن النسبة المئوية 90 لمقياس وقت الاستجابة
add
لطلبات واجهة برمجة التطبيقات وget
أعلى من تلك الخاصة بواجهةlasttimestamp
برمجة التطبيقات.يمكنك مشاهدة نمط مشابه للأخطاء، حيث تحتوي واجهة برمجة التطبيقات على
lasttimestamp
أخطاء أقل من واجهات برمجة التطبيقات الأخرى.نتائج واجهات
add
برمجة التطبيقات وget
متشابهة، بينماlasttimestamp
تتصرف واجهة برمجة التطبيقات بشكل مختلف. قد يكون السبب مرتبطا بقاعدة البيانات، لأن كل منadd
واجهات برمجة التطبيقات وget
تتضمن الوصول إلى قاعدة البيانات.للتحقيق في هذا الازدحام بمزيد من التفصيل، مرر لأسفل إلى قسم لوحة معلومات المقاييس من جانب الخادم.
تعرض المقاييس من جانب الخادم معلومات مفصلة حول مكونات تطبيق Azure: خطة Azure App Service وتطبيق ويب Azure App Service وAzure Cosmos DB.
في مقاييس خطة Azure App Service، يمكنك أن ترى أن مقاييس النسبة المئوية لوحدة المعالجة المركزية ونسبة الذاكرة ضمن نطاق مقبول.
الآن، انظر إلى المقاييس من جانب خادم Azure Cosmos DB.
لاحظ أن مقياس Normalized RU Consumption يظهر أن قاعدة البيانات كانت تعمل بسرعة عند استخدام الموارد بنسبة 100٪. قد يتسبب الاستخدام العالي للموارد في حدوث أخطاء في تقييد قاعدة البيانات. كما قد يزيد من أوقات الاستجابة
add
لواجهات برمجة تطبيقات الويب وget
.يمكنك أيضا أن ترى أن مقياس معدل النقل المقدم لمثيل Azure Cosmos DB لديه الحد الأقصى لمعدل النقل 400 وحدة طلب. قد تؤدي زيادة معدل النقل المقدم لقاعدة البيانات إلى حل مشكلة الأداء.
زيادة معدل نقل قاعدة البيانات
في هذا القسم، يمكنك تخصيص المزيد من الموارد إلى قاعدة البيانات لحل ازدحام الأداء.
بالنسبة إلى Azure Cosmos DB، قم بزيادة إعداد مقياس RU لقاعدة البيانات:
انتقل إلى مورد Azure Cosmos DB الذي قمت بتوفيره كجزء من نموذج نشر التطبيق.
حدد علامة التبويب Data Explorer.
حدد تغيير الحجم الإعدادات، وقم بتحديث قيمة معدل النقل إلى 1200.
حدد حفظ لتأكيد التغييرات.
التحقق من صحة تحسينات الأداء
الآن بعد أن قمت بزيادة معدل نقل قاعدة البيانات، أعد تشغيل اختبار التحميل وتحقق من تحسين نتائج الأداء:
في لوحة معلومات تشغيل الاختبار، حدد Rerun، ثم حدد Rerun في جزء Rerun test .
يمكنك مشاهدة إدخال تشغيل اختبار جديد مع عمود الحالة الذي يمر عبر حالات Provisioning و Executing و Done. في أي وقت، حدد تشغيل الاختبار لمراقبة كيفية تقدم اختبار التحميل.
بعد انتهاء اختبار التحميل، تحقق من نتائج وقت الاستجابة ونتائج الأخطاء للمقاييس من جانب العميل.
تحقق من المقاييس من جانب الخادم ل Azure Cosmos DB وتأكد من تحسين الأداء.
قيمة استهلاك وحدة الطلب (RU) التي تمت تسويتها في Azure Cosmos DB أقل بكثير من 100٪.
الآن بعد أن قمت بتحديث إعدادات المقياس لقاعدة البيانات، يمكنك أن ترى ما يلي:
- تم تحسين وقت الاستجابة
add
لواجهات برمجة التطبيقات وget
. - ولا يزال استهلاك وحدة الطلب الطبيعي أقل بكثير من الحد المسموح به.
ونتيجة لذلك، تحسن الأداء العام للتطبيق الخاص بك.
تنظيف الموارد
هام
يمكنك إعادة استخدام مورد Azure Load Testing الذي قمت بإنشائه لبرامج تعليمية أخرى في Azure Load Testing ومقالات إرشادية.
إذا كنت لا تخطط لاستخدام أي من الموارد التي قمت بإنشائها، فاحذفها حتى لا تتحمل أي رسوم إضافية. إذا قمت بنشر نموذج التطبيق في مجموعة موارد مختلفة، فقد تحتاج إلى تكرار الخطوات التالية.
لحذف الموارد باستخدام مدخل Microsoft Azure:
حدد زر القائمة في الزاوية العلوية اليمنى، ثم حدد Resource groups.
من القائمة، حدد مجموعة الموارد التي أنشأتها.
حدد Delete resource group.
أدخل اسم مجموعة الموارد. ثم حدد حذف.
لحذف الموارد باستخدام Azure CLI، أدخل الأمر التالي:
az group delete --name <yourresourcegroup>
تذكر أن حذف مجموعة الموارد يؤدي إلى حذف كافة الموارد الموجودة داخلها.
المحتوى ذو الصلة
- الحصول على مزيد من التفاصيل حول كيفية تشخيص الاختبارات الفاشلة
- مراقبة المقاييس من جانب الخادم لتحديد اختناقات الأداء في التطبيق الخاص بك
- تحديد معايير فشل اختبار التحميل للتحقق من صحة نتائج الاختبار مقابل متطلبات الخدمة
- تعرف على المزيد حول المفاهيم الرئيسية لاختبار تحميل Azure.