تدريب - تغيير حجم تطبيق ويب يدويًا
عليك توسيع نطاق النظام حين تتوقع زيادة في نسبة استخدام الشبكة. كما قد تحتاج إلى توسيع النطاق استجابة لانخفاض الأداء.
في مثال نظام حجز الفنادق، يمكنك زيادة عدد مثيلات تطبيق الويب عندما تتوقع حركة مرور إضافية بسبب حدث خاص أو عرض خاص أو تقلبات موسمية. يمكنك تقليص النظام مرة أخرى عند انخفاض الطلب.
في هذا التمرين، يمكنك إنشاء خطة App Service ونشر تطبيق ويب باستخدام هذه الخطة. يمكنك مراقبة أداء تطبيق الويب قيد التحميل. ثم قم بتوسيع نطاق التطبيق وتحقق من أن الخطة حسنت أداء التطبيق.
يستخدم التدريب عينة تطبيق ويب يطبق واجهة برمجة تطبيقات ويب API. تكشف واجهة برمجة تطبيقات الويب عمليات HTTP POST وGET التي تقوم بإنشاء واسترداد حجوزات العملاء لموقع ويب لحجوزات الفنادق. لا يتم حفظ الحجوزات. تقوم عملية GET ببساطة باسترداد البيانات الوهمية.
كما يقوم التدريب بتشغيل تطبيق عميل يحاكي العديد من المستخدمين الذين يصدرون عمليات POST وGET في وقت واحد. يوفر هذا التطبيق حمل العمل الذي تستخدمه لاختبار أداء تطبيق الويب قبل التحجيم وبعده.
إنشاء خطة App Service وتطبيق ويب
هام
تحتاج إلى اشتراك Azure الخاص بك لتشغيل هذا التمرين، وقد تتكبد رسوماً. إذا لم يكن لديك بالفعل اشتراك Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.
سجل دخولك إلى مدخل Azure.
في قائمة مدخل Microsoft Azure أو من صفحة الصفحة الرئيسية، حدد إنشاء مورد. يظهر إنشاء جزء مصدر.
من جزء القائمة الأيسر ضمن Categories اختر Web وابحث عن Web App واختره، ثم اختر Create. سيظهر جزء Create Web App.
في علامة التبويب "Basics"، أدخل القِيم التالية لكل إعداد.
إشعار
ينبغي أن يكون لتطبيق الويب اسم فريد. نقترح استخدام شيء، مثل <اسمك أو الأحرف الأولى>hotelsystem. استخدم هذا الاسم كلما ترى
<your-webapp-name>
في هذا التمرين.الإعداد القيمة تفاصيل المشروع الوصف تحديد اشتراك Azure الذي ترغب في استخدامه لهذا التمرين مجموعة الموارد اختر رابط Create new وأدخل مجموعة موارد جديدة تسمى mslearn-scale تفاصيل المثيل الاسم راجع ملاحظة قبل الجدول. أدخل اسمًا فريدًا يمكنك تذكره لاحقًا في هذا التمرين نشر الرمز مكدس وقت التشغيل .NET 6 (LTS) نظام تشغيل Windows منطقة اقبل الافتراضي خطة App Service خطة Windows اقبل الافتراضي خطة الأسعار اقبل الافتراضي اختر إنشاء>مراجعة + إنشاء. انتظر حتى يتم إنشاء تطبيق الويب وتوزيعه.
إنشاء تطبيق ويب ونشره
في شريط المهام Azure، اختر رمز Cloud Shell لفتح AzureCloud Shell، وشغّل الأمر التالي لتنزيل التعليمات البرمجية المصدر لنظام حجز الفندق.
git clone https://github.com/MicrosoftDocs/mslearn-hotel-reservation-system.git
انتقل إلى مجلد mslearn-hotel-reservation-system/src.
cd mslearn-hotel-reservation-system/src
قم بتصميم تطبيقات لنظام الفندق. هناك تطبيقان: تطبيق ويب ينفذ واجهة برمجة تطبيقات الويب للنظام وتطبيق العميل الذي تستخدمه لتحميل اختبار تطبيق الويب.
dotnet build
قم بإعداد تطبيق ويب HotelReservationSystem للنشر.
cd HotelReservationSystem dotnet publish -o website
انتقل إلى مجلد موقع الويب الذي يحتوي على الملفات المنشورة. قم بضغط الملفات ونشرها على تطبيق الويب الذي قمت بإنشائه في المهمة السابقة. انسخ التعليمات البرمجية التالية للمفكرة واستبدل
<your-webapp-name>
باسم تطبيق الويب الخاص بك، ثم الصق كتلة التعليمات البرمجية المُحررة في Cloud Shell وشغلها.cd website zip website.zip * az webapp deployment source config-zip --src website.zip --name <your-webapp-name> --resource-group mslearn-scale
استخدم مستعرض الويب للانتقال إلى
http://<your-webapp-name>.azurewebsites.net/api/reservations/1
. يظهر مستند JSON يحتوي على تفاصيل الحجز رقم 1.
مراقبة أداء تطبيق الويب قبل توسيع النطاق
ارجع إلى Cloud Shell وانتقل إلى المجلد ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient.
cd ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient
قم بتحرير ملف App.config في هذا المجلد باستخدام محرر التعليمات البرمجية.
code App.config
قم بإلغاء تعليق السطر الذي يحدد
ReservationsServiceURI
، واستبدل القيمة YOUR WEBSITE NAME باسم بتطبيق الويب. ينبغي أن يبدو الملف مثل هذا المثال.<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="NumClients" value="100" /> <add key="ReservationsServiceURI" value="https://<your-webapp-name>.azurewebsites.net/" /> <add key="ReservationsServiceCollection" value="api/reservations" /> </appSettings> </configuration>
إشعار
يحدد إعداد
NumClients
في هذا الملف عدد العملاء الذين سيحاولون في وقت واحد الاتصال بتطبيق الويب وتنفيذ العمل. يشمل العمل إنشاء حجز ثم تشغيل استعلام لإحضار تفاصيل الحجز. كل البيانات المستخدمة مزيفة. فهي ليست ثابتة في أي مكان. اترك هذه القيمة معينة على100
.احفظ الملف عن طريق تحديد Ctrl+S.
قم بتحرير الملف HotelReservationSystemTestClient.csproj في هذا المجلد باستخدام محرر التعليمات البرمجية.
code HotelReservationSystemTestClient.csproj
قم بتحرير السطر الذي يحدد
TargetFramework
، بحيث يتطابق مع مكدس وقت التشغيل الذي حددته لتطبيق الويب الخاص بك.TargetFramework
غير القيمة إلىnetcoreapp7.0
. ينبغي أن يبدو الملف مثل هذا المثال.<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp7.0</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Newtonsoft.Json" Version="12.0.1" /> <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.5.0" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\HotelReservationSystemTypes\HotelReservationSystemTypes.csproj" /> </ItemGroup> </Project>
احفظ الملف عن طريق تحديد Ctrl+S، وأغلق محرر التعليمات البرمجية بالضغط على Ctrl+Q.
أعد إنشاء تطبيق العميل التجريبي بالتكوين الجديد.
dotnet build
قم بتشغيل تطبيق العميل. ترى العديد من الرسائل تظهر أثناء بدء تشغيل العملاء وإجراء الحجوزات وتشغيل الاستعلامات. وفِّر للنظام بضع دقائق للتشغيل. الاستجابات بطيئة، وقريبا تبدأ طلبات العميل في الفشل مع أخطاء HTTP 408 (المهلة).
dotnet run
في مدخل Microsoft Azure، اختر Go to resource لفتح تطبيق الويب.
في جزء القائمة الأيسر اختر Monitoring ثم اختر Metrics.
في الجانب الأيمن من شريط القوائم في جزء تطبيق الويب، اختر النطاق الزمني Local Time: Last 24 hours (Automatic)، ثم اختر Last 30 minutes وبعدها اخترApply.
في الجزء أسفل Chart Title، أضف المقاييس التالية إلى المخطط:
- اختر Add metric، ومن القائمة المنسدلة Metric اختر CPU Time. بالنسبة لـ Aggregation اختر Sum.
- اختر Add metric، ومن القائمة المنسدلة Metric اختر Http Server Errors. بالنسبة لـ Aggregation اختر Sum.
- اختر Add metric، ومن القائمة المنسدلة Metric اختر Http 4xx. بالنسبة لـ Aggregation اختر Sum.
- اختر Add metric، ومن القائمة المنسدلة Metric اختر Response Time. بالنسبة لـ Aggregation اختر Avg.
في شريط القوائم الأيمن اختر Pin to dashboard. يظهر جزء Pin to dashboard؛ حدد علامة التبويب Create New.
في القائمة المنسدلة Dashboard name أدخل اسم تطبيق الويب، ثم اختر Create and pin.
اترك النظام يعمل لمدة خمس دقائق حتى يستقر، ثم لاحظ وقت CPU، وعدد أخطاء HTTP 4xx، ومتوسط وقت الاستجابة. يجب أن تشاهد عددا كبيرا من أخطاء HTTP 4xx. هذه الأخطاء هي أخطاء مهلة HTTP 408. متوسط وقت الاستجابة هو عدة ثوان. قد ترى خطأ خادم HTTP العرضي، اعتمادا على كيفية تعامل خادم الويب مع العبء.
اترك تطبيق العميل قيد التشغيل في أثناء تنفيذ المهمة التالية.
توسيع نطاق تطبيق الويب والتحقق من تحسين الأداء
في مدخل Microsoft Azure، اختر اسم تطبيق الويب (خدمة التطبيقات)، وفي جزء القائمة الأيسر ضمن Settings اختر Scale-out (App Service Plan). يظهر جزء Scale out (App Service plan).
في علامة تبويب Configure، حدد Manual scale وعيّن Instance count إلى 5. حدد حفظ.
بدّل إلى Cloud Shell الذي يُشغّل تطبيق العميل. يجب أن تشاهد عددا أقل من الطلبات تفشل مع الأخطاء، على الرغم من أن بعضها لا يزال قد انتهى.
قم بتشغيل التطبيق لمدة خمس دقائق أخرى. بعد ذلك، انتقل إلى المخطط الذي يعرض مقاييس التطبيق على لوحة المعلومات في مدخل Microsoft Azure. يجب أن ترى أن وقت وحدة المعالجة المركزية يزيد بشكل كبير لأن هناك الآن خمسة أضعاف طاقة وحدة المعالجة المركزية المتوفرة. يجب أن ينخفض متوسط وقت الاستجابة، ويجب أن ينخفض أيضا عدد أخطاء HTTP 4xx. يعرض المخطط التالي مجموعة نموذجية من النتائج. تُسجل النقطة التي حدث عندها توسيع النطاق.
إذا كنت ترغب في تجربة المزيد، فحاول زيادة عدد مثيلات خطة App Service إلى 10. الحد الأقصى لعدد المثيلات التي يدعمها مستوى S1 هو 10. ينبغي ملاحظة زيادة أخرى في وقت CPU، وانخفاض يقابله في وقت الاستجابة وأخطاء HTTP 4xx.
عّد إلى Cloud Shell الذي يُشغّل تطبيق العميل. اختر Enter لإيقاف التطبيق.
في مدخل Microsoft Azure، أعد تعيين Instance count إلى 1. اختر تطبيق الويب، ومن جزء القائمة الأيسر اختر Scale out (App Service plan). في علامة التبويب تكوين ، قم بتعيين عدد المثيلات إلى 1، وحدد حفظ.