And*_*y T 5 session-variables azure-web-sites
我使用Azure PAAS为我的一个客户制作了一个产品版本– Azure Web App(以前称为Azure网站)。我们在自动缩放模式下用最少2个实例标记了该站点。我们开始收到用户的抱怨,他们断断续续地遇到一些问题,只有当他们在积极使用网站时丢失会话变量时,这些问题才会引起。
我们想知道怎么回事,因为我们将会话保持在“过程中”。我们没有在第1天就单独使用proc会话管理器(基于Redis缓存/基于数据库),因为根据该文档,Azure Web应用程序默认情况下使用粘性会话负载平衡器运行(当运行多个实例时) 。它将ARR亲和力Cookie注入Http响应中,这有助于将用户重定向到与第一次建立会话的实例相同。
要调试此问题,我们开始在页面中打印实际的sessionId。经过多次尝试,我们重现了该问题–令人惊讶的是,会议被交换了。可以说–我的会话ID是“ 1eocgtmwwwwvs1cxksyofne4”,在页面刷新后,它更改为“ 5p1hsxszq2mcqmt5i5ytqg12”,包括所有在会话变量中管理的信息。吓人...不是吗?
伸出援手以提供紧急票证–响应是:
“ Azure Web Apps是一个无状态平台,我们的建议是实施一个最适合您的环境的会话管理解决方案,并避免依赖于内存中会话状态管理,尤其是在您的Web App托管在多个服务器上的情况下。如果您正在考虑在不久的将来实现用于会话管理的缓存解决方案,我们建议您暂时移至单个实例,作为一种解决方法,我们将协助您确保应用程序在单个实例上能够按预期工作。 ”
我完全理解这一点-但是为什么Affinity Cookie会失败。我知道可以禁用Affinity cookie,但我没有将其禁用。我想分享这个故事。对于任何其他基于基于Affinity cookie的粘性负载均衡器的人来说,它可能都是有用的。
顺便说一句:Redis会话提供程序的实现非常容易。只需几分钟即可实现。
现在进行验尸-出了什么问题?我不认为Cookie是“不支持”的浏览器。那为什么即使在我支持cookie的浏览器中它也会间歇性地失败。PAAS资源不断移动/交换....我们无法在proc会话中使用…等等
| 归档时间: |
|
| 查看次数: |
2033 次 |
| 最近记录: |