线程池已用完时,背景批处理编译可能导致一个死锁

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 821155
本文已归档。它按“原样”提供,并且不再更新。
概要
当您执行背景批处理编译时,编译可能会导致死锁 Aspnet_wp.exe 过程,如果使用了所有工作线程。当您将进程模型设置为 maxWorkerThreads = 20,然后正运行的 Aspnet_wp.exe 线程的数目也等于 20 时,所有 20 工作线程等待一个 ManualResetEvent 来用信号通知。不能运行,直到没有可用的线程的 WaitCallback (BatchCompileDirectory) 函数发出信号事件。自由线程永远不会发生。使用线程池中的所有线程,然后生成一种情况下,需要模拟此方案中的批处理编译的。

您可能会看到在事件查看器的应用程序日志中记录以下事件:

事件 ID: 1003年:
描述: Aspnet_wp.exe (PID: <xxx>) 被回收,原因是它被怀疑是被死锁状态。它没有发送任何响应挂起的请求以最后一次 180 秒为单位)。

更多信息
当背景批处理编译导致死锁时,工作线程将返回以下的堆栈跟踪:
Current frame: ChildEBP RetAddr  Caller,Callee0c06f938 03187c87 (MethodDesc 0x3228200 +0x27 System.Web.Hosting.RecyclableArrayHelper.ReuseIntegerArray)0c06f940 099f63e2 (MethodDesc 0x3223fc0 +0x1ea System.Web.Hosting.ISAPIWorkerRequest.FlushCachedResponse)0c06f98c 799de84f (MethodDesc 0x79bac930 +0x57 System.Threading.WaitHandle.WaitOne)0c06f9b0 099f4389 (MethodDesc 0x322d660 +0x59 System.Web.HttpWriter.GetBufferedLength)0c06f9c4 099f68a8 (MethodDesc 0x94e68a8 +0x8 System.Web.Compilation.PreservedAssemblyEntry/BackgroundBatchCompiler.BeforeDoneWithSessionHandler)0c06f9c8 099f4178 (MethodDesc 0x3224970 +0x350 System.Web.HttpRuntime.FinishRequest)
解决方案

如何获取该修补程序

此问题固定在 2003 年六月 ASP.NET 修补程序软件包 1.1。有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
821156信息: ASP.NET 1.1 2003 年六月修补程序汇总包
您不能单独获取此修复程序。您必须安装该汇总。

注意当您请求此修补程序时,您收到的总成型任务。

此修补程序的英文版具有文件属性 (或更高版本) 下表中列出。其格式为协调通用时间 (UTC) 列出日期和时间对这些文件。当您查看文件信息时,将转换为本地时间。若要 UTC 与本地时间之间的时差使用控制面板中的日期和时间工具中的 时区 选项卡。
	           Date         Time   Version       Size       File name		   -----------------------------------------------------------------------		   07-Jun-2003  00:44  1.1.4322.910    253,952  Aspnet_isapi.dll		   07-Jun-2003  00:44  1.1.4322.910     20,480  Aspnet_regiis.exe		   07-Jun-2003  00:44  1.1.4322.910     32,768  Aspnet_wp.exe		   15-May-2003  23:49                   33,522  Installpersistsqlstate.sql		   15-May-2003  23:49                   34,150  Installsqlstate.sql		   07-Jun-2003  12:52  1.1.4322.910  1,216,512  System.dll		   07-Jun-2003  00:39                   14,472  Webuivalidation.js		   07-Jun-2003  12:52  1.1.4322.910  1,249,280  System.Web.dll

属性

文章 ID:821155 - 上次审阅时间:02/27/2014 02:14:14 - 修订版本: 2.1

Microsoft ASP.NET 1.1

  • kbnosurvey kbarchive kbmt kbqfe KB821155 KbMtzh
反馈