【问题标题】:Reading an ASP.NET session variable is super slow (30 seconds)!读取 ASP.NET 会话变量非常慢(30 秒)!
【发布时间】:2012-06-28 09:33:02
【问题描述】:

调试一个执行缓慢的操作,我发现(令我惊讶的是)该行:

if (HttpContext.Current.Session["CurrentCompany"] == null)

执行大约需要 30 秒

可能会发生什么!?有人见过这样的吗?

(它在一个负载均衡配置中,StateServer 存储会话,这可能是相关的吗?)

【问题讨论】:

  • 是所有对 Session[string] 的调用都很慢,还是只对每个请求进行第一次调用?
  • “正好”是 30 秒吗?我只是在想 SQL 上的默认连接超时是 30 秒,所以可能是与状态服务器的连接失败。该语句最终评估为真吗?
  • 只是为了解决这个问题:您 100% 确定是该代码吗?您是否尝试过使用测试常量值来确保?
  • 使一台服务器离线;将会话设置为 inproc;仅在该服务器上测试应用程序 - 以找出应用程序与 sql 服务器存在连接问题的问题。

标签: asp.net session session-state session-variables


【解决方案1】:

我找到了解决方法:我在 web.config 中更改了会话提供程序:

从“StateServer”到“InProc”:

<sessionState mode="InProc" cookieless="false" timeout="60"/>

...停顿消失了。

(很可能它无法到达状态服务器,当前服务器不是它最初运行的位置)。

感谢您的所有建议,尤其是@Hari 和@dougajmcdonald。

.

事后编辑
这可能会帮助以后的人:这个问题的根本原因似乎是一种方法,该方法产生了大量非常繁重的 SQL 查询,这些查询与这个 stateserver 问题几乎同时发生。我认为这些是相关的,不完全确定如何。从那以后我也遇到过类似的问题,所以如果您遇到这样的会话问题,请寻找大量的数据库活动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 2012-03-26
    • 2021-10-12
    相关资源
    最近更新 更多