博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

当 ASP.NET 在 IIS 6.0 中锁死的情况下,如何生成转储文件

Posted on 2007-09-25 10:57  吴博  阅读(489)  评论(0)    收藏  举报

http://support.microsoft.com/kb/828222/zh-cn

本任务的内容

概要

当您在 Internet 信息服务 (IIS) 6.0 中遇到被锁死的情况时,应用程序事件日志中会出现类似下面这样的错误信息:

类型:警告
来源:W3SVC-WP
类别:无
事件 ID:2262
日期:7/29/2003
时间:12:08:58 PM
用户:N/A
计算机:ComputerName
描述:ISAPI 'C:\WINNT\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll' reported itself as unhealthy for the following reason:'Deadlock detected'.(“C:\WINNT\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll”因以下原因将自身报告为有害文件:检测到锁死情况。)

有关详细信息,请访问“帮助和支持中心”,网址为: http://support.microsoft.com (http://support.microsoft.com/).

在系统事件日志中会出现类似下面这样的错误信息:

类型:警告
来源:W3SVC
类别:无
事件 ID:1013
日期:7/29/2003
时间:12:09:34 PM
用户:N/A
计算机:ComputerName
描述:A process serving application pool 'DefaultAppPool' exceeded time limits during shut down.The process id was '2756'.(进程服务应用程序集“DefaultAppPool”在关闭过程中执行了时间限制。进程 ID 为“2756”。)

有关详细信息,请访问“帮助和支持中心”,网址为: http://support.microsoft.com (http://support.microsoft.com/).

回到顶端

为诊断程序生成转储文件

IIS 6.0 有一项叫做“孤立工作进程”的新功能。此功能使您能在预定要回收的进程终止之前对其进行检查。孤立工作进程可用来在进程中附加一个调试程序并生成一个供调查使用的转储文件。

注意:当进程运行在 IIS 5.0 兼容模式中时,此功能不可用。

创建一个批处理文件,在一个工作进程被孤立时执行

1. 启动记事本。
2. 将下面的代码粘贴到记事本中:
@if "%_echo%"=="" echo off
            setlocal
            set TIMESTAMP=%DATE:~-9%_%TIME%
            set TIMESTAMP=%TIMESTAMP:/=_%
            set TIMESTAMP=%TIMESTAMP::=_%
            set TIMESTAMP=%TIMESTAMP:.=_%
            set TIMESTAMP=%TIMESTAMP: =_%
            set FILENAME=c:\crash_%TIMESTAMP%.dmp
            set LOG=c:\log.txt
            set COMMAND=c:\debuggers\cdb.exe -c ".dump /o /mhf %FILENAME%;q" -p %1
            echo %COMMAND% > %LOG%
            %COMMAND%
            endlocal
3. 将文件保存为文件名.cmd。在这个例子中,我们将文件命名为 action.cmd。但是,您也可以随意给文件起别的名字。
注意:您可能必须修改调试程序的位置和您想要生成转储文件的位置。

配置孤立工作进程设置

1. 在命令提示符处键入以下命令,然后按 Enter:
cd \Inetpub\adminscripts
2. 要使孤立工作进程的功能可用,需要在命令提示符下键入以下命令:
adsutil.vbs SET W3SVC/AppPools/DefaultAppPool/OrphanWorkerProcess TRUE
            
3. 在命令提示符下,设置当进程预定要回收时运行的可执行文件。例如,在这种情况下使用在“创建一个批处理文件,在一个工作进程被孤立时执行”一节创建的批处理文件:
adsutil.vbs SET W3SVC/AppPools/DefaultAppPool/OrphanActionExe "c:\action.cmd"
adsutil.vbs SET W3SVC/AppPools/DefaultAppPool/OrphanActionParams "%%1%%"
            
注意:请确保 OrphanActionExe 选项指向在“创建一个批处理文件,在一个工作进程被孤立时执行”一节创建的批处理文件的位置。还要确保 W3wp.exe 进程的标识对该文件有读取和执行权限。

回到顶端

参考

有关更多信息,请访问下面的 Microsoft Developer Network (MSDN) 网站:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/92d00c5e-e588-4151-be84-42561e9229f0.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/92d00c5e-e588-4151-be84-42561e9229f0.asp)

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/0efabfb5-c5dd-4a47-a52c-18335ffe1c45.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/0efabfb5-c5dd-4a47-a52c-18335ffe1c45.asp)

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/c70603f3-7fc2-4e0b-b177-77b92c8fb38b.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/c70603f3-7fc2-4e0b-b177-77b92c8fb38b.asp)

回到顶端