环境: Windows Server 2008 R2, IIS7.5,PHP,mysql

过一段时间后,IIS7.5中的某个网站不能访问,查看相关应用程序池已经停止,再查看相关系统日志,发现一个警告日志,信息如下:

日志名称:          System
来源:            Microsoft-Windows-WAS
日期:            2012/4/5 10:28:50
事件 ID:         5009
任务类别:          无
级别:            警告
关键字:           经典
用户:            暂缺
计算机:           WIN-it0527
描述:
为应用程序池“ www.it0527.com ”提供服务的进程意外终止。进程 ID 是“4420”。进程退出代码是“0xff”。
事件 Xml:
<Event xmlns=" http://schemas.microsoft.com/win/2004/08/events/event ">
  <System>
    <Provider Name="Microsoft-Windows-WAS" Guid="{524B5D04-133C-4A62-8362-64E8EDB9CE40}" EventSourceName="WAS" />
    <EventID Qualifiers="32768">5009</EventID>
    <Version>0</Version>
    <Level>3</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2012-04-05T02:28:50.000000000Z" />
    <EventRecordID>68377</EventRecordID>
    <Correlation />
    <Execution ProcessID="0" ThreadID="0" />
    <Channel>System</Channel>
    <Computer>WIN-it0527</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="AppPoolID"> www.it0527.com </Data>
    <Data Name="ProcessID">4420</Data>
    <Data Name="ExitCode">ff</Data>
  </EventData>
</Event>

说明:Windows Process Activation Service (WAS) 

解决思路及方法:
一、检查自己的code
分析原因,查看自己的代码是否有死循环;是否使用了非托管的代码,而没有释放资源(例如引用c/c++ DLL);是否程序中没有正常的捕获处理异常等。还是好好检查自己的代码吧。

二、网上很多解决方法,说是连接数超过限制,新系统且本地测试用,所以不存在iis线程过高,找到一个方法奏效,给NETWORK SERVICE 加上访问iis服务的权限,具体方法如下:
点击“ 开始 ”-“ 控制面板 ”-“ 管理工 具”-“ 组件服务 ”-“ 计算 机”-“ 我的电脑 ”-“ DCOM”选项 , 
选择其下的“ IIS ADMIN SERVICE ”,右健选择“ 属性 ”,找到“ 安全 ”,在“ 启动和激活权限 ”中编辑“ 自定义 ”,添加帐号“ NETWORK SERVICE  ”, 
给该帐号赋予“ 本地启动 ”和“ 本地激活 ”的权限,重新启动IIS
(“开始”-“运行”-“CMD”,点确定,然后运行IISRESET), 
之后再访问同一站点,则一切正常。
Logo

更多推荐