ASP.NET会话限制最佳实践

时间:2019-02-15 02:40:26

标签: asp.net azure session-state paas session-management

我们正在具有3个实例的Azure App Service中运行PaaS ASP.NET应用程序,并在SQL Server数据库中管理会话数据输出。

该应用程序处于活动状态,当您遵循某些路径时,我们注意到一些用户有大量会话数据。一些用户的会话数据超过500k(对于一次简单的没有登录的站点访问,平均会话在750-3000马克左右,这是我所期望的)。

500k听起来有些过分,但是想知道这些天大型企业应用程序中的正常情况以及会话中保存大量数据的弊端。

我最初的想法是

  • 由于不经常执行查询,因此对Web App CPU没有影响(实际上可能有所减少)
  • 因为我们运行outproc,所以对Web App内存没有影响
  • 运行垃圾回收时,SQL Server会话数据库上DTU的峰值很大,
  • 应用程序可能会变慢,因为在请求之间读取和写入会话数据需要更长的时间,
  • 对于互联网连接较差的用户可能不是理想的选择,
  • 如果对象的作用域不正确,则可能导致内存泄漏增加。

我的推理是否有意义或我错过了什么?

任何想法和建议将不胜感激

非常感谢。

1 个答案:

答案 0 :(得分:0)

我完全同意您在Azure App实例中使用出站会话管理的背后原因。在云中使用IN-PROC会话是严格禁止的。托管到云的原因是具有分布式环境来实现高可用性。

从您的角度出发,我认为速度是您所关心的,或者对于大多数Web应用程序来说都很重要,要解决此问题,您可能会考虑使用Azure Redis缓存。

这里是使用Azure Redis缓存配置会话管理的文章:

请参阅此处的文档:https://docs.microsoft.com/en-us/azure/redis-cache/cache-aspnet-session-state-provider