تعرضت عملية تخدم تجمع التطبيقات "Classic .NET AppPool" إلى خطأ فادح في الاتصال مع خدمة تنشيط العمليات في Windows

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

سؤال

أقوم بتشغيل تطبيق ويب ASP.NET 3.5 على IIS 7 على Windows Server 2008.

تلقيت الخطأ التالي في وقت سابق من بعد ظهر هذا اليوم:

HTTP Error 503. The service is unavailable.

لقد بحثت في سجلات الأحداث واكتشفت ما يلي:

A process serving application pool 'Classic .NET AppPool' suffered a fatal communication error with the Windows Process Activation Service. The process id was '3328'. The data field contains the error number.

وفيما يلي التفاصيل الكاملة لذلك الحدث:

Log Name:      System
Source:        Microsoft-Windows-WAS
Date:          18/09/2009 14:58:31
Event ID:      5011
Task Category: None
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      computername
Description:
A process serving application pool 'Classic .NET AppPool' suffered a fatal communication error with the Windows Process Activation Service. The process id was '3328'. The data field contains the error number.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-WAS" Guid="{5 .. 0}" EventSourceName="WAS" />
    <EventID Qualifiers="32768">5011</EventID>
    <Version>0</Version>
    <Level>3</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2009-09-18T13:58:31.000Z" />
    <EventRecordID>23552</EventRecordID>
    <Correlation />
    <Execution ProcessID="0" ThreadID="0" />
    <Channel>System</Channel>
    <Computer>computername</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="AppPoolID">Classic .NET AppPool</Data>
    <Data Name="ProcessID">3328</Data>
    <Binary>6D000780</Binary>
  </EventData>
</Event>

وقد أدى ذلك إلى:

Application pool 'Classic .NET AppPool' is being automatically disabled due to a series of failures in the process(es) serving that application pool.

وفيما يلي التفاصيل الكاملة لذلك الحدث:

Log Name:      System
Source:        Microsoft-Windows-WAS
Date:          18/09/2009 15:03:05
Event ID:      5002
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      computername
Description:
Application pool 'Classic .NET AppPool' is being automatically disabled due to a series of failures in the process(es) serving that application pool.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-WAS" Guid="{5 .. 0}" EventSourceName="WAS" />
    <EventID Qualifiers="49152">5002</EventID>
    <Version>0</Version>
    <Level>2</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2009-09-18T14:03:05.000Z" />
    <EventRecordID>23557</EventRecordID>
    <Correlation />
    <Execution ProcessID="0" ThreadID="0" />
    <Channel>System</Channel>
    <Computer>computername</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="AppPoolID">Classic .NET AppPool</Data>
    <Binary>
    </Binary>
  </EventData>
</Event>

الختام في:خطأ المتشعب 503.الخدمة غير متوفرة.

هل يمكن أن يساعدني أحد في تحديد كيف حدث هذا وما يجب أن أفعله لمنع حدوثه في المستقبل.

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

المحلول

وهذا واحد هو واحد سيئة جدا. أوصي الحصول على أدوات تشخيص Debug IIS . ربما يمكنك التخفيف من أعراض عن طريق إيقاف "رابيد حماية فشل" في خصائص تجمع التطبيقات الخاصة بك، ولكن ذلك لن مجرد قناع المشكلة. ما يجري هو أن التطبيق الخاص بك تشهد استثناء في كثير من الأحيان / حتى مرارا وتكرارا أن الخدمة تغلق من تلقاء نفسه. سوف تحتاج إلى تشغيل أداة تشخيصية لالتقاط كل ما يحدث داخل وخارج للعثور على الاستثناء الذي هو التي تحدث.

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

نصائح أخرى

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

وNServiceBus يدير مهمة أساسية عن بدء تطبيق timesout بعد 10 ثانية، مما تسبب في عملية w3wp إلى أن يقتل إذا كان لا يمكن قراءتها من قائمة الانتظار. بعد ن (الافتراضي 5) w3wp تحطم ركلات الفشل السريع الحماية في وتوقف تجمع التطبيقات.

http://blog.jonathanoliver.com/ 2010/11 / nservicebus-w3wp-إكس-عمليات تحطمها /

وه على الأرجح الناجمة عن حلقة لا نهائية.

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

لقد قمت للتو بتتبع وإصلاح نفس المشكلة السيئة.بعض الأشياء التي يمكن أن تسبب المشكلة:

  • حلقة Server.Transfer()
  • استدعاء CurrentThread.Abort() في سيناريوهات معينة..(مثل بعد Server.Transfer ()!)

إصلاح هذه الأشياء هو ما أصلح الأمر بالنسبة لنا.

وكان لي هذه المشكلة، وكان عارض الأحداث "وحدة DLL C: \ ويندوز \ SYSTEM32 \ RpcProxy \ RpcProxy.dll فشل تحميل البيانات هي الخطأ" كان هذا آخر الخطوات لتصحيح هذه: http://forums.iis.net/t/1154189.aspx

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