【问题标题】:A process serving application pool 'Classic .NET AppPool' suffered a fatal communication error with the Windows Process Activation Service为应用程序池“Classic .NET AppPool”提供服务的进程与 Windows 进程激活服务发生了致命的通信错误
【发布时间】:2010-11-29 13:19:54
【问题描述】:

我正在 Windows Server 2008 上的 IIS 7 上运行 ASP.NET 3.5 Web 应用程序。

今天下午早些时候我收到了以下错误:

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>

结论:HTTP 错误 503。服务不可用。

请有人帮我确定这是怎么发生的,以及我需要做些什么来防止它在未来发生。

【问题讨论】:

标签: asp.net http iis-7 http-status-code-503


【解决方案1】:

这是一个非常讨厌的一个。我建议使用IIS Debug Diagnostics 工具。您可以通过关闭应用程序池属性中的“快速故障保护”来缓解症状,但这只会掩盖问题。发生的事情是您的应用程序经常/重复地遇到异常,以至于服务自行关闭。您需要运行诊断工具来捕获进出的所有内容,以查找正在发生的异常。

这可能是一项非常费力的任务,因为该工具会收集千兆字节的垃圾进行筛选。如果幸运的话,关闭“快速故障保护”可能会让异常继续通过浏览器,但我猜服务器最终会挂起。

【讨论】:

    【解决方案2】:

    如果您使用 NServiceBus,请确保运行应用程序池的任何帐户都有权读取消息队列。

    NServiceBus 在应用程序启动时运行一个后台任务,该任务在 10 秒后超时,如果 w3wp 进程无法从队列中读取,则会导致它被终止。在 n(默认为 5)后 w3wp 崩溃 快速失败保护启动并停止应用程序池。

    http://blog.jonathanoliver.com/2010/11/nservicebus-w3wp-exe-processes-crashing/

    【讨论】:

    • 这正是我遇到的问题。谢谢你。
    【解决方案3】:

    它很可能是由无限循环引起的。

    (我刚刚遇到了同样的问题。)所以你只需要在代码中寻找使用循环的地方,看看删除其中一个是否会阻止错误。一旦找到了罪魁祸首,就可以尝试找出导致它无限循环的原因。

    【讨论】:

      【解决方案4】:

      我刚刚找到并解决了同样令人讨厌的问题。可能导致问题的几件事:

      • Server.Transfer() 循环
      • 在某些情况下调用CurrentThread.Abort()..(就像在Server.Transfer()之后一样!)

      解决这些问题就是为我们解决问题。

      【讨论】:

        【解决方案5】:

        我遇到了这个问题,事件查看器出现“模块 DLL C:\Windows\system32\RpcProxy\RpcProxy.dll 加载失败。数据是错误。”这篇文章有纠正这个问题的步骤: http://forums.iis.net/t/1154189.aspx

        【讨论】:

          【解决方案6】:

          我现在在 IIS-10 / Windows Server 上遇到了同样的问题。 该应用程序在开发环境中运行良好,但在生产服务器中产生错误。 我认为问题可能与某些内存/堆/堆栈管理有关。 发布发布版本而不是调试解决了这个问题。 更详细:“高级构建设置”/“调试信息”/“完整”->“pdb-only”。

          更新:第二天,我不小心再次发布了一个调试版本。现在正在运行的软件产生了一些不同的行为。现在解决方案是禁用“检查算术上溢/下溢”(Build->Advanced)(VS2013)

          【讨论】:

            猜你喜欢
            • 2019-02-12
            • 2012-06-22
            • 2019-08-28
            • 2017-02-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-06-08
            相关资源
            最近更新 更多