【发布时间】:2019-01-04 09:39:35
【问题描述】:
最近,为了在一定程度上允许并发请求并增加performance,我们为我们的.aspx 页面启用了EnableSessionState="Readonly",以便对会话数据进行只读访问。
我想知道在网络场中启用此功能,这会影响任何数据丢失或对服务器或用户产生任何其他影响吗?
当前网络农场设置:
假设我们有 4 台服务器。
1. 假设用户 A,请求页面 http://example.com/StudentDetails.aspx,此请求命中负载均衡器。
2.负载均衡器根据流量将请求从 4 个可用服务器转移到任意 1 个。
3. 每个服务器都启用了InProc 会话状态模式。
4.我们确保同一台服务器处理来自同一客户端的后续请求。
任何帮助都会很棒。
【问题讨论】:
-
“我们确保同一服务器处理来自同一客户端的后续请求”...如果该服务器在会话期间变得不可用或过载会怎样?当然,负载平衡的全部意义在于您可以将任何请求无缝地重定向到任何当前可用的服务器。
-
@ADyson 是的,我们执行重定向,然后在该服务器中创建一个新会话。
-
不应该,因为您应该在所有服务器之间共享会话状态(例如,使用 sql 会话状态)。然后,您将更有弹性地应对单个服务器故障,并且如果一台机器发生故障,用户不会丢失他们的会话(可能还有他们的数据)。
-
@ADyson ,是的,这是正确的,但我的问题是在网络场中只读会话状态是否有任何影响?
-
您预计会有什么影响?您只需将其设置为只读一页。如果,正如您所提到的,您甚至没有在服务器之间共享会话,那么实际上出于会话目的,您甚至没有农场。您只有 4 台单独的服务器。对场没有影响,因为没有会话共享。如果您确实按照我的建议开始共享会话,那么我仍然认为如果有影响的话,影响将是微乎其微的。只读访问应该减少阻塞(例如,如果用户同时请求两个启用会话的页面可能会发生)但仅此而已。
标签: asp.net session-state web-farm