أوامر PowerShell للتحقق والتحقق من أفضل ممارسات تشغيل IIS/تجمعات التطبيقات/ASP.NET
في أي جهد للتحسين، فإن الخطوة الأولى الموصى بها هي الاستكشاف والإجابة على أين نقف (استكشاف وتحليل حالتنا الحالية) بالإضافة إلى المكان الذي نود أن نكون فيه، على الرغم من أنه يمكن تأكيد كل أفضل الممارسات وتطبيقها يدويًا ، لقد بدأ هذا المشروع في النطاق الأول للمساعدة أثناء الاكتشاف. كأول مخرج، سيكون لدينا ملفين بتنسيق CSV، حيث سيكون لدينا عناصر الإجراء الموصى بها لتغطيتها ومعلومات عامة حول النظام الحالي.
تنفذ هذه الأوامر عمليات قراءة النظام فقط، ولا تتضمن إجراء تعديلات، والاستثناءات الوحيدة هي ملفين بتنسيق CSV تم إنشاؤهما فقط لاحتواء النتائج النهائية.
وقت إعادة التدوير الافتراضي هو 1740 دقيقة، إذن، ستحدث إعادة تدوير مجمع التطبيقات أثناء ساعات العمل في وقت ما، وقد يتسبب ذلك في تدهور الأداء وانتهاء جلسات المستخدم، (يمكن تخفيف مشكلة انتهاء جلسة المستخدم إذا احتفظ ASP.NET بحالة الجلسة الخاصة به out-proc، على سبيل المثال في SqlServer)، القيمة الموصى بها لإعادة تدوير الوقت العادي هي 0 (اضبطها على صفر، وهذا يعني أن إعادة التدوير لن تحدث بسبب الوقت المنقضي)، بالإضافة إلى تحديد وقت محدد، على سبيل المثال في 3:00 صباحا
المهلة الافتراضية لإعادة التدوير هي 20 دقيقة، وهذا يعني أن IIS سيقوم تلقائيًا بإيقاف تشغيل العملية المنفذة بعد 20 دقيقة من عدم النشاط، ثم عندما يصل طلب جديد إلى التطبيق، تبدأ عملية التنشيط الكاملة مرة أخرى (إنشاء عامل جديد العملية وصفحات ASP.NET وتجميع Dlls وما إلى ذلك)، قد يتسبب ذلك في تدهور الأداء وانتهاء جلسات المستخدم، إذا سمح لنا استخدام ذاكرة الخادم، فإن القيمة الموصى بها لمهلة الخمول هي 0 (تم تعيينها على صفر، في آخر بعبارة أخرى، لن يقوم IIS أبدًا بإيقاف عملية عاملة قيد التشغيل بالفعل بسبب وقت عدم النشاط، ولن تتم إعادة تدويرها إلا عند استيفاء شروط إعادة التدوير الأخرى)
الهوية الافتراضية التي تستخدمها العملية المنفذة هي ApplicationPoolIdentity، ولها الامتيازات المطلوبة لتشغيل أي تطبيق ويب تقريبًا، وفي حالة الحاجة إلى تغيير هذا الحساب، نحتاج إلى التأكد من أن الحساب المحدد لا يتمتع بامتيازات أكثر من الحد الأدنى المطلوب ، لا يُنصح أبدًا، تحت أي ظرف من الظروف، بترك حسابات LocalService أو المسؤول لتشغيل عملية العامل في الإنتاج، فقد يؤدي ذلك إلى كشف ليس فقط أمان التطبيق وأمان نظام التشغيل الخاص بنا أيضًا
نظرًا لأن كل تجمع تطبيقات يبدأ عملية عاملة مختلفة، فهذه هي طبقة العزل النهائية في IIS، لذلك، إذا كان التطبيق يواجه مشكلات في الأداء لسبب ما، أو استثناءات غير معالجة، أو تنافس مؤشر الترابط و/أو مشاكل في إدارة الموارد، فلا ينبغي للتطبيقات الأخرى تتأثر بهذا السلوك السيئ، وهذا صحيح، ولكن فقط عندما يتم عزل كل تطبيق في تجمع التطبيقات الخاص به.
لا تترك أبدًا عن طريق الخطأ (أو عن عمد) مفتاح التبديل
الموجود في ملف web.config الخاص بالتطبيق، حيث يؤدي القيام بذلك إلى حدوث عدد من الأمور غير المثالية بما في ذلك:
PS > build.ps1
، سيؤدي هذا إلى إنشاء مجلد output
output
إلى الخادم الهدف لتحليلهPS > Run.ps1
HostName-Findings.csv
على كافة عناصر الإجراء المتعلقة بأفضل ممارسات تشغيل IIS/ASP.NETHostName-BaseLineInfo.csv
يحتوي على معلومات عامة حول الحالة الحالية للنظامتحتاج إلى تشغيل هذه الأوامر كمسؤول
نرحب بأي تحسين في التصميم، ونرحب أيضًا بأي فكرة جديدة :)
تم تصميم جميع الأكواد البرمجية الموجودة في Powerops تقريبًا وكتابتها من خلال TDD، لذا أشجعك على الاستمرار في هذه العادة الجيدة
لتشغيل اختبارات الوحدة، افتح بوويرشيل كمسؤول وقم بتشغيل PS projectPath/test/> Invoke-Pester