如何在 IIS 应用程序池崩溃并重新启动时创建日志?

如何在 IIS 应用程序池崩溃并重新启动时创建日志?

每当 IIS 的应用程序池崩溃并重新启动时,我们如何创建日志?我们必须通过 asp.net 管理错误日志还是 IIS 自己管理?问题是管理员可以看到 IIS 何时重新启动?此外,哪个版本的 IIS 最适合这类工作。

答案1

您可以使用 ProcDump 来执行此操作。这是一个方便的命令行实用程序,您可以指向正在运行的实例并指定希望它在何种情况下生成转储文件。其中一个选项是在进程终止时执行此操作(具体来说,-t)。

下载 ProcDump: http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx

使用情况:procdump [-64] [[-c CPU 使用率] [-u] [-s 秒数]] [-n 超过] [-e [1]] [-h] [-m 提交使用情况] [-ma] [-o] [-p 计数器阈值] [-r] [-t] < [转储文件]] | [-x [参数]>

-64 默认情况下,在 64 位 Windows 上运行时,Procdump 将捕获 32 位进程的 32 位转储。此选项将覆盖以创建 64 位转储。-c 创建进程转储的 CPU 阈值。-e 当进程遇到未处理的异常时写入转储。-h 如果进程有挂起窗口(至少 5 秒内不响应窗口消息),则写入转储。-m 创建进程转储的内存提交阈值(以 MB 为单位)。-ma 写入包含所有进程内存的转储文件。默认转储格式包括线程和句柄信息。-n 退出前要写入的转储数。-o 覆盖现有的转储文件。-p 超过阈值时在指定的性能计数器上触发。-r 反映(克隆)转储的进程以最大限度地减少进程挂起的时间(仅限 Windows 7 及更高版本)。-s 写入转储之前必须连续达到 CPU 阈值(默认值为 10)。-t 进程终止时写入转储。 -u 处理与单个核心相关的 CPU 使用率。-x 使用可选参数启动指定映像。使用 -accepteula 命令行选项自动接受 Sysinternals 许可协议。

如果只创建正在运行的进程的转储,请忽略 CPU 阈值。如果忽略转储文件名,则默认为 .dmp。

答案2

一般来说,应用程序池不应该崩溃 - 所以您可能需要附加 Windows 的调试工具并获取崩溃转储(如果崩溃的话) - 然后让您的更高级的开发人员深入研究导致崩溃的原因 - 崩溃转储将提供详细信息。

答案3

当应用程序池崩溃时,它应该在 Windows 事件查看器中创建一个条目,通常为 1009。我会推荐 IIS 6(只是因为我个人比 IIS 7 更好)但我确信 IIS7 会是一个更好的软件。

答案4

使用调试诊断工具生成并分析崩溃内存转储。

http://support.microsoft.com/kb/919789

相关内容