asp.net - ASP.NET 会话限制最佳实践
问题描述
我们在具有 3 个实例的 Azure 应用服务中运行 PaaS ASP.NET 应用程序,并在 SQL Server 数据库中管理会话数据输出过程。
该应用程序是实时的,我们注意到一些用户在遵循某些路径时有大量会话数据,例如,一些用户的会话数据超过 500k(对于没有登录的简单站点访问,平均会话在 750 - 3000 标记左右这是我所期望的)。
500k 听起来太高了,但想知道这些天在大型企业应用程序中什么是正常的,以及在会话中保存这么多数据的缺点。
我最初的想法是,
- 对 Web App CPU 没有影响(实际上可能减少),因为不经常进行查询,
- 因为我们运行 outproc,所以对 Web App Memory 没有影响,
- 垃圾收集运行时 Sql Server 会话数据库上的 DTU 出现大峰值,
- 应用程序可能会慢一些,因为在请求之间读取和写入会话数据需要更长的时间,
- 可能不适合互联网连接不佳的用户,
- 如果对象的范围不正确,可能会增加内存泄漏。
我的推理有道理还是我错过了什么?
任何想法和建议将不胜感激,
非常感谢。
解决方案
我完全同意您在 Azure 应用程序实例中使用进程外会话管理的理由。在云中使用进程内会话是严格禁止的。托管到云的原因是通过分布式环境实现高可用性。
从您的角度理解,我认为速度对您来说是一个问题,或者如果对大多数 Web 应用程序很重要,为了克服这个问题,您可能会考虑使用 Azure redis 缓存。
这是使用 Azure redis 缓存配置会话管理的文章:
请参阅此处的文档:https ://docs.microsoft.com/en-us/azure/redis-cache/cache-aspnet-session-state-provider
推荐阅读
- swift - 如何在 ARkit 中获取场景的真实中心坐标
- aws-lambda - AWS Lambda -> DAX -> DynamoDB:“客户端无权调用端点”
- spring-cloud - 组合任务中的单个任务未退出
- asp.net-core - 有没有办法在 .net 核心类库中使用 IHostingEnvironment?
- shell - 根据一列的重复条目删除重复行
- python - 我是 python 中的类的新手,编译显示错误分段()不带参数
- jquery - ajax在发布后自动生成查询字符串
- reactjs - 在 Safari 浏览器中,ReactJS setState 在子组件中不起作用
- xml - XSLT - 对节点进行分组时缺少属性
- reactjs - React 获取组件外元素的偏移量