(不知道这是否是一个IIS问题,所以如果这是更适合所以我会愉快地移动它…)
我们有一个偶尔死于IIS的应用程序,事件日志声称应用程序池由于死锁而报告自己不健康。 我试图在死亡的过程中得到这个过程的崩溃转储,看看我们是否可以找出问题所在。
我有这个Microsoft知识库文章#828222 ,它说应用程序池上有一个选项来启用“孤立工作进程”分析。 我们已经完全按照这些步骤安装了debugging器工具,为应用程序池启用了“孤立工作进程”选项,并设置了一个batch file以在发生时运行:
adsutil.vbs SET W3SVC/AppPools/MyAppPool/OrphanWorkerProcess TRUE adsutil.vbs SET W3SVC/AppPools/MyAppPool/OrphanActionExe "c:\debug\dump.cmd" adsutil.vbs SET W3SVC/AppPools/MyAppPool/OrphanActionParams "%1%"
debugdump.cmd本质上只是在死亡进程的PID上运行debugdump.cmd (在计算一个唯一的文件名后):
c:\debug\cdb.exe -c ".dump /o /ma %FILENAME%;q" -p %1
configuration的IIS端似乎是正确的 – 它试图在死亡过程中运行batch file。 但是它并没有做任何事情,因为按照cdb :
Cannot debug pid 3236, NTSTATUS 0xC000010A "An attempt was made to access an exiting process."
我认为这个选项的全部意义在于,在debugging器有机会转储它之前,IIS 不会终止进程; 我错过了configuration中的东西吗?