使用状态服务器和缓存的ASP.Net进程(web garden)

使用状态服务器和缓存的ASP.Net进程(web garden),asp.net,session,iis-7,caching,web-garden,Asp.net,Session,Iis 7,Caching,Web Garden,我在IIS7上有一个ASP.Net网站,我计划增加MaxProcess以匹配服务器上的内核数量(4个内核,64位Windows server 2008) 从我所读到的内容来看,如果我增加MaxProcesses来创建一个web花园,我必须设置一个进程外状态服务器,因此我计划使用ASPState服务在工作进程之间共享会话 但有一点我并不清楚,缓存是否也是共享的?还是必须为缓存设置新的自定义提供程序?缓存不共享。web garden创建多个“w3wp”进程。每个进程都有自己的缓存。如果要共享缓存,请

我在IIS7上有一个ASP.Net网站,我计划增加MaxProcess以匹配服务器上的内核数量(4个内核,64位Windows server 2008)

从我所读到的内容来看,如果我增加MaxProcesses来创建一个web花园,我必须设置一个进程外状态服务器,因此我计划使用ASPState服务在工作进程之间共享会话


但有一点我并不清楚,缓存是否也是共享的?还是必须为缓存设置新的自定义提供程序?

缓存不共享。web garden创建多个“w3wp”进程。每个进程都有自己的缓存。

如果要共享缓存,请使用MemCached Win32(与Enyim缓存客户端一起)或使用新的MS产品Velocity。这样,一旦您移动到一台服务器之外,您就已经在体系结构上设置好处理它。

进程内缓存永远不会在web花园中共享


但事实是。。。我怀疑你所做的背后的动机。如果目标是更有效地使用内核,那么您可以增加运行ASP.NET应用程序的请求线程和/或工作线程的数量。运行多个w3wp进程不一定是您想要的选项。如果您有一些受约束的资源,比如一个旧的进程内COM对象,它在线程中的伸缩性很差,那么我可以看到如何在多个进程中更好地伸缩。但是,除非你真的知道自己在做什么以及为什么要这样做,否则请从该设置中轻轻后退一步,并将其保持在1。;-)

我认为增加过程的数量是提高机器性能的自然选择,当我计划从长远来看跨越到多个服务器时,它将是一个更平滑的步骤,从Web园中移出,在这种情况下,我正在考虑MeMcCask提供程序。老实说,我不知道如何增加每个工作进程的线程数,我认为这是作为进程级别处理的。如果您有代码阻止,您可能需要考虑通过添加线程或Web花园来增加并发性。但要认识到,这只会以降低原始性能为代价提供短期的可用性,并不能解决无性能代码,只能延迟不可避免的问题。