ASP.NET MVC 会话锁之高性能并发问题

个朋友咨询我,为什么在单独测试项目中,多个接口可以可以并行执行,而到实际项目中就线性执行,而不能并行执行(多核cpu)关于这个问题 今天就说说哪些因素影响高性能并发问题。

1、session

在ASP.NET MVC 中 session 默认访问请求加锁的,也就是说,请接口是按顺序执行,不会产生因请求多而生数据问题,不需额外加并发锁处理问题。

优点: session 自带锁,不需要加并发锁。

缺点:性能低,不能高并发请求。

如果项目中用session 可以controller 类上加上[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)] 这个 。当然 这个类中是可以读取session 不能写session,如果写session了 上面就不起作用了。如果想保存用户信息,可以参考下面方案。

2、cache

在ASP.NET MVC 中cache 不会产生像 session 访问请求加锁的,也就是说,请接口不是按顺序执行,会产生因请求多而生数据问题,需要额外加并发锁处理问题。

优点:支持并行请求,性能相对 session 高

缺点:高并发请求时 需要加并行锁,保证数据一至性问题,如果数据过多会服务器性产生一定影响。集群会产生一定影响

3、第三方nosql 

在ASP.NET MVC 中当然也可以使用第三方nosql (redis、memcached等)数据库 来保存一些缓存数据,比如数据字典,用户信息等

优点:高性能,高并发,集群不受影响,可以任意策略。

缺点:高并发请求时 需要加并行锁,需要安装服务端,客户端需要额外写访问代码。

今天就分享到这里,下次有时间 来分享一下 asp.net 高性能高并发时锁问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值