据我所知,可以通过不同的方法提高在IIS上发布的 ASP.NET 应用程序性能:
- 网页花园:对应用池使用多个工作进程。
- Web 场:具有多台计算机为同一应用程序的实例提供服务
- 调整 ASP.NET web.config 文件
。也许还有其他我不认识的人...
选项 1 和 2 要求序列化复杂的数据结构,并将会话状态模式设置为状态服务器或 SQL Server(InProc 模式不兼容且不起作用)
我想专注于选项 1 和 3:
关于 Web 园(选项 1),我们为应用程序池设置了 1 个以上的工作进程,并且必须将状态服务器或 sql 服务器设置为会话状态模式。
在选项 3 中,我们通过设置 maxWorkerThreads 等参数来调整 web.config 文件,如此处所述。
现在我想到了很多问题......
我无法确定在选项 1 中为 App Pool 设置超过 1 个工作进程与在选项 1 中将 maxWorkerThreads 设置为 3>有什么区别。
在选项 1 中,您有超过 1 个工作进程可用于处理传入请求,- 而在选项 3 中,您有许多线程可用于处理传入请求,那么有什么区别?
- 工作进程 = 线程?
- 应用程序池的工作进程(选项 1、案例 #worker 进程> 1)的工作方式和行为是否与有许多线程(选项 3、案例 #maxWorkerThreads> 1)相同? 选项
- 1 中的进程是否与选项 3 中的线程相同?
- 此外,在选项 3 中,当应用程序池有 1 个工作进程,但在 web.config 文件中将 maxWorkerThreads>设置为 1 时,它是如何工作的?与选项 1 中的方案不同吗?
- 此外,是否可以将 InProc 会话状态模式与选项 3 一起使用?
而在选项 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 中的方案不同吗?
首先,maxWorkerThreads 应该在 machine.config 中设置,我们无法通过 web.cofnig 进行设置。
MaxWorkerThreads 用于限制工作线程的最大数量,如果将其设置为 1,则表示每个 w3wp.exe 进程只有一个线程将工作。
此外,是否可以将 InProc 会话状态模式与选项 3 一起使用?
当然,你可以使用它。