IIS意外崩溃或因网站导致的服务器性能下降甚至崩溃是一件令管理员非常头疼的问题,早期我通常的做法是使用Filemon和Task Manager来配合找到可以的站点,之后将站点放入独立进程监视,最终确定罪魁祸首!这个过程是非常耗时而且消耗精力的。有时候甚至不知道该如何是好!
自从微软正式发布了调试诊断工具 IIS Diagnostics Toolkit 后终于找到了解决办法,依靠这个工具可以实现内存转储捕获来协助我们发现问题。
上面只是简单的介绍,我也是才开始接触这个工具,下面我转载的是来自微软网站的资料:
1. 打开调试诊断工具。将弹出如下所示的“新建规则向导”。
2. 创建 Crash(崩溃)规则,然后单击“Next”(下一步)。
3. 因为我们不知道哪个进程崩溃了,所以选择“All IIS Related processes”(所有 IIS 相关的进程),然后单击“Next”(下一步)。
4. 此时,您不需要设置任何高级配置选项,所以请单击“Next”(下一步)。
5. 键入规则名称,然后输入 userdump 位置的路径。
注意:请记住,这些内存转储可能会非常大,所以请确保选择有大量空闲磁盘空间的分区。
6. 单击“Next”(下一步),选择“Activate therule now”(立即激活规则),然后单击“Finish”(完成)。
主调试诊断工具窗口显示了刚创建的规则。请注意,在包含您规则的那一行,Userdump 计数设置为 0。下次 IIS 崩溃时,调试诊断工具将捕获内存转储,您会看到 Userdump 计数将变为 1。
分析内存捕获
1. 打开调试诊断工具,然后单击“Advanced Analysis”(高级分析)选项卡。
2. 在 Data Files(数据文件)部分,单击“Add Data Files”(添加数据文件)按钮,然后添加调试诊断工具刚才为您创建的转储文件。
3. 突出显示 Available Analysis Scripts(可用分析脚本)部分的 Crash/Hang Analyzers(崩溃/挂起分析器)脚本,然后单击“Start Analysis”(开始分析)按钮。这将启动分析脚本,它将生成一份基于 HTML 的详细报告,说明在系统崩溃时 IIS 及其相关进程的运行情况。如果分析脚本在内存转储中发现了一些需要关注的问题,它会在报告的顶部将其显示出来并给出可行的解决方案。
可以使用在以下网址处提供的 Windows 调试工具进行内存转储的高级分析:http://www.microsoft.com/whdc/devtools/debugging/default.mspx。