首先介绍一下当前环境的背景知识.我们有许多ASP.NET应用程序,所有这些应用程序都在某些方面使用会话.由于流量水平,我们在多个服务器上"负载均衡",但是,我们的负载平衡设置为使用"Sticky Sessions",因为当前所有Web应用程序都设置为使用"InProc"进行会话状态.
我们正在考虑能够在我们的负载均衡器上删除"Sticky Sessions"配置,因为我们的流量负载服务器可以并且确实会过载.我们希望采用更加平衡的方法,但必须能够使用会话.
我知道SqlServer的会话状态会起作用,但由于我们无法控制的原因,我们无法使用SqlServer来存储我们的状态.在研究中似乎StateServer是我们最好的选择.我们有一个额外的服务器,周围有大量的内存.此服务器可以是整个Web群集的StateServer.我们只想知道以下事情.
1.)除了从InProc切换到StateServer的任何潜在的序列化问题之外,是否存在丢失会话对象或在上面列出的环境中产生错误的主要已知问题?
2.)除了单点故障,并且性能稍慢,我们需要注意使用StateServer的任何其他问题.
3.)是否有任何指标显示三种状态存储之间的性能差异?
这是一个关于asp.net状态的体面的FAQ:http://www.eggheadcafe.com/articles/20021016.asp
从该文章,这里有一些关于StateServer的信息:
在Web场中,请确保所有Web服务器中都具有相同的MachineKey.有关如何操作的信息,请参见知识库文章313091.
此外,请确保您的对象是可序列化的.有关详细信息,请参见KB 312112.
对于要在Web场中的不同Web服务器上维护的会话状态,IIS Metabase中的网站的应用程序路径(例如\ LM\W3SVC\2)在Web场中的所有Web服务器中应该相同.有关详细信息,请参阅KB 325056