سؤال

ما الذي يمكنني فعله للتأكد من أنه عند تشغيل إعادة تشغيل تجمع التطبيق/التطبيق ، فإن التطبيق يعود عبر الإنترنت بأسرع وقت ممكن؟

والأفضل من ذلك ، هل هناك طريقة لمنع إعادة تشغيل التطبيق عند حدوث المشغلات المعتادة؟ مثل تعديل web.config أو global.asax أو machine.config؟

هل كانت مفيدة؟

المحلول

ستكون هناك ميزة "البداية التلقائية" في ASP.NET 4.0 (يتحدث سكوت غوثري عن ذلك) ، لكن هذا لن يساعدك الآن.

يرجى التأكد من أن تجمع التطبيقات/التطبيق الخاص بك يعمل فيه ، ولن يذهب إلى "النوم" تلقائيًا. تم تعيين AppOl الافتراضي على إيقاف تشغيله بعد 20 دقيقة من Inactivty. كما أذكر أن هذا لا يجعل موقع الويب يعيد بناء ، ولكنه يجعل الطلب الأول أبطأ بشكل ملحوظ.

ملاحظة صغيرة ، أ مشروع الموقع يمكن أيضًا إنشاءه ، لذلك سيكون App_Code فارغًا وسيحتوي مجلد Bin الخاص بك على مجموعة من .dll's (فقط استخدم Build> Website). هذا بالتأكيد سيجعل الطلب الأول لموقعك أسرع. لا أعتقد أ تطبيق الموقع سوف يركل بشكل أسرع من المسبق مشروع الموقع, ، ولكن من الأسهل إدارتها.

نصائح أخرى

نعم ، سيؤدي الانتقال إلى تطبيقات الويب إلى تسريع عملية إعادة التشغيل. شيء آخر يجب القيام به هو جعل عالمك.

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

يجب أن تكون أوقات إعادة التشغيل سريعة جدًا في حوالي 2 إلى 3 ثوان. ومع ذلك ، فقد رأيت بعض ملفات Global.asax معقدة للغاية والتي وضعت بعض بيانات مستوى المجال التي استغرقت ما يصل إلى 20 ثانية. بالطبع ، كانوا على استعداد لدفع هذا السعر لأنه خفض بعض أوقات تحميل الصفحات العادية من 3 ثوان إلى .1 ثانية.

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

عند استخدام مشاريع الموقع, ، أعتقد ذلك نقل ملفات app_code إلى مكتبة فئة خارجية من شأنه أن يؤدي إلى تسريع الأمور لأن الكود سيتم تنسيقه مسبقًا.

لمشاريع تطبيقات الويب ، يمكنك استخدام مشروع نشر الويب (VS2010 رابط تنزيل) لمجلة الموقع إلى DLL مماثلة لمشروع موقع الويب. انظر مقالة Scottgu حول كيفية استخدام WDPs.

لقد واجهت مشكلة مماثلة من حيث أنني أقوم بتشغيل موقع مرور شديد للغاية يحصل على 300+ طلب/ثانية جيدة. يستغرق إعادة التشغيل 90 ثانية جيدة على الأقل لذلك.

عندما أقوم بإجراء تغيير يعيد تشغيل الخادم ، يبدو أن إعادة التشغيل تتوقف حتى تغلق جميع الطلبات القديمة (بعضها طويل جدًا على المدى). يمكنني جعل إعادة التشغيل يحدث بشكل أسرع بكثير عن طريق قتل مثيل W3WP.exe القديم يدويًا.

هل هناك طريقة لإجبار IIS على إغلاق جميع الاتصالات على الفور وإعادة تشغيل شاق؟ بعض الإعدادات في IIS أو ASP.NET للتحكم في هذا؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top