MaxWorkerThreads与应用程序池工作进程之间的区别是什么?

时间:2019-06-04 19:19:56

标签: asp.net-mvc iis application-pool worker-process web-garden

据我所知,可以通过不同的方法来提高IIS上发布的ASP.NET应用程序的性能:

  1. Web Garden:为App Pool使用多个工作进程。
  2. Web场:拥有一台以上的机器来服务同一应用程序的实例
  3. 调整ASP.NET web.config文件

...也许还有其他我不认识的人...

选项1和2需要对复杂的数据结构进行序列化,并且还将会话状态模式设置为State Server或SQL Server(InProc模式不兼容,因此不起作用)

我想关注选项1和3:

关于网络花园(选项1),我们为一个应用程序池设置了多个工作进程,并且必须将状态服务器或sql服务器设置为会话状态模式。

在选项3中,我们通过设置诸如maxWorkerThreads之类的参数来调整web.config文件,如here所述。

现在我想到了很多问题。...

我无法区分在选项1中为App Pool设置多个工作进程与在选项3中设置maxWorkerThreads> 1之间的区别。

  1. 在选项1中,您可以使用1个以上的工作流程来处理传入的请求,而在选项3中,您可以使用很多线程来处理传入的请求,所以有什么区别?
  2. 工作进程=线程?
  3. 应用程序池的工作进程(选项1,案例#worker进程> 1)是否工作并表现为与我们有很多线程(选项3,案例#maxWorkerThreads> 1)相同?
  4. 选项1中的进程与选项3中的线程是否相同?
  5. 此外,在选项3中,当应用程序池有1个工作进程但在web.config文件中设置maxWorkerThreads> 1时,它如何工作?与方案1不同吗?
  6. 还可以在选项3中使用InProc会话状态模式吗?

1 个答案:

答案 0 :(得分:0)

  

在选项1中,您可以使用多个工作进程来处理传入的请求,而在选项3中,您可以使用很多线程来处理传入的请求,所以有什么区别?

据我所知,工作进程是IIS可以启动的w3wp.exe进程的最大数目。

maxWorkerThreadsis的数量即工作进程w3wp.exe可以使用的线程数。

如果在machine.config中进行设置,并且.Net的值为20,则意味着每个w3wp进程最多可以启动20个工作线程。

  

工作进程=线程?

不,工作进程表示w3wp.exe的卷。

  

应用程序池的工作进程(选项1,案例#worker进程> 1)是否工作并表现出与我们有很多线程(选项3,案例#maxWorkerThreads> 1)相同的方式?

  

选项1中的进程是否与选项3中的线程相同?

不,有不同的东西。

  

此外,在选项3中,当应用程序池有1个工作进程但在web.config文件中设置maxWorkerThreads> 1时,它如何工作?与方案1不同吗?

首先,应在machine.config中设置maxWorkerThreads,我们无法通过web.cofnig对其进行设置。

MaxWorkerThreads用于限制辅助线程的最大数量,如果将其设置为1,则意味着每个w3wp.exe进程只能使用一个线程。

  

还可以在选项3中使用InProc会话状态模式吗?

好的,您可以使用它。