权限管理、用户权限系统、开源用户权限系统、信息化建设标准基础数据管理平台
代码改变世界

WindowsServer2003R2、IIS6下非常让人郁闷的ASP.NET MVC在大用户量下Session会乱串的无法正确读取数据,导致系统无法正常使用

  通用C#系统架构  阅读(3218)  评论(39编辑  收藏  举报
在MVC框架下写了非常简单的代码,如下

<span>欢迎您, @Session["RealName"].ToString() [ @Session["Code"].ToString() ]</span>

 

   在用户数量不多时一切都运行正常,在个人电脑上调试也没问题,但是部署到服务器上,访问的用户数量非常庞大后,发现Session会乱的现象,我们也调试了程序的每个环节,没能发现什么大问题,甚至把静态方法都进行了改造,而且,只有登录时会写入Session,其他时候都只是读取Session。

   最让人郁闷的是程序在还没超时的情况下Session就会开始乱起来,例如命名是A用户登录的,多刷新几次后会变成B用户,再多刷新几次后又能变成A用户,出现了一些不可预知的错误。

   系统里大概有4000多个账户,每个账户大概有20-30个人在使用,在测试环境下,用户访问数量还少时一切正常,但是大概有1万个用户同时使用系统时就会出现Session乱套的情况。

   最要命的是,读取Session是微软提供的方法,不知道问题出在哪里,下午调试了一下午还没能发现问题的根源,这个系统全国有上万人在随时输入数据,而且已经输入了100多万条数据,接下来还会输入蛮长一段时间。

   这么用户变来变去可不是儿戏,MVC的Session读取的方法难道连1万个用户的压力也顶不住?下面抓几个系统相关的参考图片。

 

杭州吉日嘎拉 QQ:252056973

杭州吉日嘎拉 QQ:252056973

杭州吉日嘎拉 QQ:252056973

系统的硬件配置大体情况如下 

杭州吉日嘎拉 QQ:252056973

系统在没几个用户时的CPU使用情况如下 

杭州吉日嘎拉 QQ:252056973

 

   在测试环境下几个不同的用户登录都不会出现这样的情况,运行情况一切良好,但是用户数量庞大了后,就发生了无法正确读取当前Session的天地错误来了。

  

 

居然不同的用户访问,居然能生成相同的 SessionId,真是活见鬼了,而且几个用户之间乱串。

kpldnxjnbmxrrh0edzy231l0
dvun2gonrxkv5cqd4x2qp5cl
0jqebcl5mv3fpstcbulp3map
34wziqicsez3clogagqolnpu

还是由于缓存倒是的错误,[OutputCache(Duration = 0, VaryByParam = "*")] 才对,但是我的搭档写了[OutputCache(Duration = 1, VaryByParam = "*")]

这里的1导致了缓存错误引起了上面的问题。

 

 

 

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2010-05-10 第12章 菜单权限项设置
2009-05-10 (四)2005年我的第一次软件行业创业,烧掉30万、2年时间打水漂的惨痛教训
2009-05-10 访问控制模型DAC,MAC,RBAC
2009-05-10 软件开发人员想找的工作,随便聊聊,娱乐大家,请补充补充


C# ASP.NET 通用权限设计、通用权限管理、通用权限组件、单点登录、集中式权限管理、统一授权体系、分级管理分级授权


微信扫一扫加好友



点击右上角即可分享
微信分享提示