1

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

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

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

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

我想关注选项 1 和 3:

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

在选项 3 中,我们通过设置 maxWorkerThreads 等参数来调整 web.config 文件,如此处所述。

现在很多问题浮现在我的脑海里......

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

  1. 在选项 1 中,您有超过 1 个工作进程可用于处理传入请求,而在选项 3 中,您有许多线程可用于处理传入请求,那么有什么区别?
  2. 工作进程=线程?
  3. 应用程序池的工作进程(选项 1,案例#worker processes > 1)的工作和行为方式是否与我们有许多线程(选项 3,案例 #maxWorkerThreads > 1)相同?
  4. 选项 1 中的进程是否与选项 3 中的线程相同?
  5. 此外,在选项 3 中,当应用程序池有 1 个工作进程但在 web.config 文件中设置 maxWorkerThreads > 1 时,它是如何工作的?与选项1中的情况不同吗?
  6. 另外,我可以将 InProc 会话状态模式与选项 3 一起使用吗?
4

1 回答 1

1

在选项 1 中,您有超过 1 个工作进程可用于处理传入请求,而在选项 3 中,您有许多线程可用于处理传入请求,那么有什么区别?

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

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

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

工作进程=线程?

不,工作进程意味着 w3wp.exe 卷。

应用程序池的工作进程(选项 1,案例#worker processes > 1)的工作和行为方式是否与我们有许多线程(选项 3,案例 #maxWorkerThreads > 1)相同?

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

不,有不同的东西。

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

首先maxWorkerThreads应该在machine.config中设置,我们不能通过web.cofnig设置。

MaxWorkerThreads 用于限制工作线程的最大数量,如果设置为 1,则表示每个 w3wp.exe 进程只有一个线程工作。

另外,我可以将 InProc 会话状态模式与选项 3 一起使用吗?

当然,你可以使用它。

于 2019-06-07T06:31:43.567 回答