Windows Server 2003 R2 (x86) / IIS 6。
我正在设置一个 ASP.NET 应用程序以及一些在“MyServiceAccount”下运行的 Windows 服务。但是,我无法启动应用程序池和 Windows 服务。
MyServiceAccount 位于 IIS_WPG 中,具有适当的本地策略权限和 NTFS 权限,我甚至尝试授予它本地管理员权限。
应用程序池反复失败,并被 IIS 自动停止。我在系统事件日志中看到的错误是:
为应用程序池“MyAppPool”提供服务的进程意外终止。进程 ID 为“7976”。进程退出代码为“0x80”。
窗口服务在启动请求后立即失败,记录的错误是:
等待 MyService 服务连接超时(30000 毫秒)。
我的研究表明,退出代码 0x80 通常与桌面堆耗尽有关。我运行了 Microsoft 的 dheapmon 工具,它表明没有堆压力:
Desktop Heap Information Monitor Tool (Version 8.1.2925.0)
Copyright (c) Microsoft Corporation. All rights reserved.
-------------------------------------------------------------
Session ID: 1 Total Desktop: ( 4288 KB - 3 desktops)
WinStation\Desktop Heap Size(KB) Used Rate(%)
-------------------------------------------------------------
WinSta0\Default 4096 11.5
WinSta0\Disconnect 64 4.0
WinSta0\Winlogon 128 7.4
-------------------------------------------------------------
重新启动服务器允许 Windows 服务和 IIS 应用程序池正常运行,但只能持续很短的一段时间。(几分钟到一个小时左右。)这表明是某种内存压力(或其他累积过程)导致了问题。
我尝试允许进程使用共享桌面堆,如下所述:
http://support.microsoft.com/kb/831135
但这导致 WWW 发布服务根本无法启动,所以我不得不撤销更改。此外,我没有看到堆压力,这让我认为还有其他事情正在发生。
为了进行健全性检查,我还使用了 SysInternals 进程监视器来查看是否收到任何文件或注册表访问被拒绝错误,但我没有看到任何错误。
任何帮助将不胜感激。