w3wp.exe 如何与 Web 应用程序一起工作?

Posted

技术标签:

【中文标题】w3wp.exe 如何与 Web 应用程序一起工作?【英文标题】:How does the w3wp.exe work with a web application? 【发布时间】:2015-05-05 16:44:50 【问题描述】:

如果我创建一个 Web 应用程序并将其托管在 Windows Server 上,那么据我所知,IIS 会处理初始请求并将其路由到适当的网站或应用程序。我的印象是为每个应用程序创建了一个 w3wp.exe(工作进程)实例。 IIS 与工作进程一起工作,而工作进程又与 Web 应用程序一起工作。

如果应用程序每秒收到 20 个请求会怎样? 工作进程会创建 20 个应用程序实例来处理每个请求,还是会将请求排队并在何时将它们传递给应用程序的单个实例?

我怀疑是后者。如果是这种情况,那么我认为工作进程会在应用程序获取请求时保持应用程序是正确的吗?

我试图完全理解 Web 应用程序在处理许多并发请求时会做什么。我之前尝试过问这个问题,但对措辞感到困惑,所以希望这是有道理的。

编辑: 感谢梅森,我意识到答案就在我面前! Web 应用程序使用不能自行运行的 DLL。调用 DLL 来处理请求的是 w3wp.exe(工作进程)。

【问题讨论】:

你试过了,看看会发生什么? 从我在性能监视器中看到的内容和通过查看任务管理器,我只得到关于 w3wp 进程的报告,而不是 w3wp 进程正在使用的应用程序。 当你有多个请求进来的时候,你的问题只要看看运行的进程就可以回答了。 W3WP 是 Web 应用程序。它是运行和托管您的代码的可执行文件。因此,您刚刚通过查看任务管理器回答了自己的问题。 它确实揭示了它是如何工作的。您现在可能认为这是一个愚蠢的问题,但其他人可能会提出同样的愚蠢问题,所以它很有用。至于回答,既然你知道了,我就留给你。我只是帮你。 【参考方案1】:

每个网站的工作进程数在应用程序池高级设置中控制(在 IIS 管理控制台中)。

每个worker可以处理的并发请求数的配置取决于IIS版本。在 IIS 7 中位于同一个地方,对于更新的版本,您必须检查您的 machine.config(寻找 maxWorkerThreads

【讨论】:

以上是关于w3wp.exe 如何与 Web 应用程序一起工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何确定哪个 w3wp.exe 进程属于哪个网站?

解决w3wp.exe占用CPU和内存问题

在调试模式下启动工作进程(w3wp.exe)是啥意思?

应用程序池及w3wp.exe的藕断丝连

ASP.NET 应用程序中的 Thread.Abort 导致 w3wp.exe 崩溃

如何诊断由 IIS7 托管的 WCF 服务中的 W3WP.exe 错误