我在 IIS7 上有一个 ASP.Net 网站,我计划增加 MaxProcesses 以匹配服务器上的核心数量(4 个核心,64 位 Windows Server 2008)。
根据我的阅读,如果我增加 MaxProcesses 来创建一个网络花园,我必须设置一个进程外状态服务器,所以我打算使用 ASPState 服务在工作进程之间共享会话。
但是有一点我不清楚,缓存是否也共享?还是我必须为缓存设置一个新的自定义提供程序?
我在 IIS7 上有一个 ASP.Net 网站,我计划增加 MaxProcesses 以匹配服务器上的核心数量(4 个核心,64 位 Windows Server 2008)。
根据我的阅读,如果我增加 MaxProcesses 来创建一个网络花园,我必须设置一个进程外状态服务器,所以我打算使用 ASPState 服务在工作进程之间共享会话。
但是有一点我不清楚,缓存是否也共享?还是我必须为缓存设置一个新的自定义提供程序?
进程内缓存永远不会在网络花园中共享。
但这是真正的事情......我质疑你所做的事情背后的动机。如果目标是更有效地使用您的内核,那么您可以只增加运行 ASP.NET 应用程序的请求和/或工作线程的数量。运行多个 w3wp 进程不一定是您想要的选项。如果你有一些受限的资源,比如一个旧的进程内 COM 对象,它的线程扩展性很差,那么我可以看到你可以如何更好地扩展多个进程。但除非您真的知道自己在做什么以及为什么,请轻轻地退出该设置并将其保留为 1。;-)
缓存不共享。网络花园创建了多个“w3wp”进程。每个进程都有自己的缓存。
如果您想共享缓存,请使用 MemCached Win32(使用 Enyim 缓存客户端)或使用新的 MS 产品 Velocity。这样,一旦您超越了一台服务器,您就已经在架构上进行了设置来处理它。