ASP.NET التطبيق على IIS7 - بطيئة جدا بدء التشغيل بعد iisreset

StackOverflow https://stackoverflow.com/questions/1441601

سؤال

لدي ASP.NET 3.5 الموقع يعمل تحت IIS7 على ويندوز 2008.

عندما كنت إعادة تشغيل IIS (iisreset), ثم ضرب صفحة بدء التشغيل الأولي بطيئة حقا.

أرى التالية النشاط في عملية اكسبلورر:

  • w3wp.exe يولد ، ولكن يظهر 0% وحدة المعالجة المركزية النشاط لمدة 60 ثانية
  • أخيرا ، w3wp.exe يذهب إلى 50 ٪ وحدة المعالجة المركزية حوالي 5 ثوان ثم الصفحة الأحمال.

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

ماذا يحدث خلال كل هذا الوقت ؟ كيف يمكنني تعقب ما أخذ كل هذا الوقت ؟

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

المحلول 4

وجدت أن هناك شبكة تأخير إجراء الاتصال الأولي من الواجهة الأمامية ملقم ويب إلى ملقم قاعدة البيانات.

المسألة غريبة على ويندوز 2008 و محددة لدينا أجهزة الشبكة.

القرار تم تعطيل التالية على ملقمات ويب:

نصائح أخرى

كان لدينا مشكلة مماثلة و اتضح أن يكون ويندوز مهلة التحقق من إبطال توقيع الشهادات.تحقق لمعرفة ما إذا كان الخادم الخاص بك هو محاولة الاتصال بها في مكان ما (مثلا ، crl.microsoft.com).ربما يكون لديك وكيل وضع غير صحيح ؟ أو جدار حماية في الطريق ؟ نحن تحدد في نهاية المطاف كان لدينا ما يكفي من السيطرة على الملقم و لا تريد أن 'نداء الوطن' ، لذلك نحن ببساطة تعطيل الاختيار.يمكنك القيام بذلك مع .NET framework 2.0 المزود بحزمة الخدمة SP1 والإصدارات الأحدث من خلال إضافة ما يلي إلى الجهاز.config.

<runtime> <generatePublisherEvidence enabled="false"/> </runtime>

أنا لست متأكدا مما إذا كان يمكنك فقط وضع هذا في التطبيق الخاص بك.config/ويب.config.

IL يتم تحويلها إلى آلة التعليمات البرمجية الأصلية (الجمعية) بواسطة Just-In-Time مترجم وتحصل على الانتظار بينما يحدث كل السحر.

عند ترجمة التعليمات البرمجية المصدر التعليمات البرمجية المدارة, مترجم يترجم مصدر في Microsoft المتوسطة language (MSIL).هذا هو وحدة المعالجة المركزية المستقلة مجموعة من التعليمات التي يمكن أن بكفاءة يمكن تحويلها إلى التعليمات البرمجية الأصلية.مايكروسوفت الوسيطة language (MSIL) هو الترجمة المستخدمة كما خرج عدد من المجمعين.فمن المدخلات فقط في الوقت (JIT) compiler.على وقت تشغيل اللغة العامة يتضمن JIT مترجم تحويل MSIL إلى التعليمات البرمجية الأصلية.

قبل Microsoft اللغة الوسيطة (MSIL) يمكن تنفيذ ذلك ، يجب أن يكون تحويلها من قبل .NET Framework فقط في الوقت (JIT) compiler الأصلي التعليمات البرمجية.هذا هو وحدة المعالجة المركزية الخاصة البرمجية التي يعمل على نفس الكمبيوتر العمارة كما JIT compiler.بدلا من استخدام الوقت و الذاكرة لتحويل جميع MSIL في portable executable (PE) ملف التعليمات البرمجية الأصلية.كان تحويل MSIL حسب الحاجة بينما المنفذة ، ثم مخابئ الناتجة التعليمات البرمجية الأصلية حتى يمكن الوصول إليها عن أي اللاحقة المكالمات.

المصدر

هذا تجميع asp.Net صفحات في اللغة المتوسطة + JIT تجميع - يحدث فقط في أول مرة يتم تحميل الصفحة.(انظر http://msdn.microsoft.com/en-us/library/ms366723.aspx)

إذا كان يزعجك حقا ثم يمكنك إيقافه من قبل تجميع موقع الويب الخاص بك.

تحرير: مجرد إعادة قراءة السؤال - 60 ثانية طويلة جدا و كنت تتوقع أن ترى بعض المعالج النشاط خلال ذلك الوقت.تحقق من سجل الأحداث للحصول على أخطاء / رسائل في النظام و تطبيق الوجهات.كما حاول إنشاء تفريغ تعطل من عملية w3wp خلال 60 ثانية - هناك احتمال أنك قد تعرفت على ما به من خلال النظر في بعض أكوام الدعوة.

إذا كان يأخذ بالضبط 60 ثانية كل مرة ثم من المرجح أن تنتظر شيئا إلى الوقت - 60 ثانية هو رقم جميل.تأكد من أنه مناسب اتصالات وحدات تحكم المجال الخ...

(إذا كان هناك بعض IIS أدوات التشخيص التي من شأنها أن نقوم بعمل أفضل ثم أخشى أن لا علم لهم هذا السؤال قد يكون أكثر ملاءمة ServerFault أعلاه هو أكثر من ذلك بكثير المطور العش نهج استكشاف الأخطاء وإصلاحها :-p)

أكبر من 60 ثانية يبدو مريب.محاولة تشغيل test.html الصفحة لمعرفة كم من الوقت تستغرق.التي من شأنها عزل IIS7 دور.

ثم مؤقتا تسمية الويب الخاص بك.التكوين العالمية.asax وتطبيق المجلدات و حاول الاختبار.صفحة aspx (بسيط جدا صفحة).التي من شأنها عزل ASP.NET.

إذا كان كل من هؤلاء سريع (أيحوالي 10 ثوان), ثم انه التطبيق الخاص بك.ولكن إذا إما بطيئة ثم عدم تطبيق شيء مع الخادم نفسه.

هذه القبعة لا علاقة JIT تجميع.العادي C# compiler برمجيا التعليمات البرمجية خلف الملفات (.aspx.cs) في لغة وسيطة في الجمعية عند بدء التشغيل إذا كانت هذه الجمعية لا وجود لها أو ملفات التعليمات البرمجية قد تغيرت.موقع الويب الخاص بك الجمعية يقع في "بن" في المجلد الخاص بك على الويب.

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

يمكنك تجنب copmpiling من موقع الويب الخاص بك إذا قمت بنشر جمعت بالفعل موقع الجمعية (YourWebsite.dll) في مجلد سلة.ومن الممكن أيضا أن تنشر فقط ملفات aspx وترك التعليمات البرمجية خلف (ملفات aspx.cs) الملفات بعيدا.

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