在Asure上托管的频繁出乎意料的Asp.net会话丢弃

时间:2017-08-02 18:00:50

标签: asp.net azure session session-cookies haproxy

由于我们已经转向azure,因此我们在制作时会遇到很多会话丢失问题

我们有InProc,基于cookie,粘性会话,大超时,没有高流量,没有高内存/进程使用。

我们使用 HAProxy 作为负载均衡器。

我做了基础研究,以下似乎都不是原因:

  • 会话超时
  • 应用程序池设置/回收
  • 内存大小和使用阈值
  • 没有吃掉的例外
  • 文件系统没有更改以导致重新启动

我特别担心loadbalancer / ssl和应用程序如何协同工作以及http标头是否正常,但我不知道任何真正监控它的工具。

我被指派在没有权限访问机器的同时找到解决方案。

Logs(Log4Net)都存储在数据库中,但没有帮助清楚地了解系统上发生了什么,也无法跟踪使用它们的用户会话。

我可以通过向代码添加所需的日志或开发某种监控模块或使用分析/调试工具来找到问题。

每月只会进行一次生产部署,所以我尽量利用这个机会。

问题:

  1. 是否有任何有用的监控/分析工具可以通过汇总我可能需要的信息来清楚地了解系统中发生的情况?例如,在从登录时间到会话丢弃的请求之间的用户/会话之后,加上有关标题和其他系统应用程序参数的信息。
  2. 如果那里没有这样的工具,请给我你的想法写一个?

1 个答案:

答案 0 :(得分:0)

这是负载均衡环境中的常见问题。正如此answer中提到的类似问题,

InProc模式,它将会话状态存储在Web服务器的内存中。这意味着会话数据在给定VM上的Web服务器内维护,并且不在VM外部共享。因此,当您有多个服务器进行负载平衡时,会话状态不会相互共享。要解决此问题,您必须将会话状态存储在Web服务器外部。

使用Redis或SQL数据库或其他。