繁体   English   中英

ASP.NET会话性能

[英]ASP.NET Session Performance

我在asp.net应用程序上遇到了性能问题。 有时需要客户端执行命令30-40秒,有时需要3-4秒。 我尝试过SQL Profiler,但我没有看到任何问题。 在客户端尝试的相同情况下,我无法在我这边复制问题。

我在想它可能与我正在使用的会话变量有关。 我使用了很多来传递页面内的信息。 但是,我不清楚它们。

如果我清除它们会有帮助吗? 如果是这样会影响其他用户。 或者仅为该用户清楚?

任何帮助表示赞赏。

在基于SQL Server的会话存储的.NET 2.0实现中的一个存储过程中存在记录锁定问题。 看起来MS在.NET 4.0版本中包含了修复程序。

看看这里: http//sanjevsharma.blogspot.com/2008/03/improving-aspnet-session-state-database.html

我99%肯定你可以运行4.0版本的aspnet_regsql -ssadd并仍然运行ASP.NET 2.0。 我记得做过2.0 vs. 4.0 SQL脚本的差异,上面的修复是唯一真正的区别。 MS的修复实现比上面的链接好一些(并且明显基于)。

会话等会话变量是用户特定的,因此清除它们不会影响其他用户。

保持会议轻松肯定有助于提高绩效。

建议ASP.NET Session在正常运行过程中不会影响SQL Server往返时间。 假设在与数据层相关的会话中没有存储任何内容(即静态SqlConnection对象)

如果您看到那些很长的时间(30-40秒),请尝试确定性能是否逐渐减慢,或者SQL Server往返时间是否为sporradic。

考虑实施日志记录以帮助确定模式。 首先写入磁盘,每天每小时一个文件,如您所见。

  • SQL命令的开始时间开始。 记录您传递的查询/数据集/相关信息。
  • SQL命令的结束时间。
--- Executing statement SELECT * FROM Customers
 --- Start 08:55.44
 --- End   08:55.45 
 === Roundtrip was 1 second  SELECT * FROM Customers

在一小时/每周/每周之后,打开日志以查找“Roundtrip”,并且可能编写一个程序来为您解析这些日志。

如果问题似乎不是您的数据库,您可以尝试分析您的Web应用程序并查看瓶颈所在。 很难重现像你在生产中看到的变量问题(4-40秒延迟),但是发生了多少方法调用以及哪些方法消耗最多的执行时间的结果可能会提供一个提示。

什么是一些好的.NET Profilers中提到了一些?

就个人而言,我是EQATEC剖面仪的忠实粉丝。

如果你有这种规模的可变性,你很可能会考虑某种锁定或争用问题。 根据时间安排以及配置文件时发生的其他情况,如果是这样,您可能看不到SQL锁定问题。 尝试监视perfmon中的锁定指标,看看是否存在任何可疑内容,并考虑系统中的其他内容可能导致任何类型的锁定或延迟等待时间。

您是否尝试过启用ASP.NET跟踪日志记录并查看调用堆栈中的加载时间? 我已经用了很多来诊断ASP.NET性能的瓶颈。 如果您不熟悉trace.axd,可以通过配置文件启用它

<trace enabled="true" />

启用此配置设置将允许您浏览站点根目录下的trace.axd并详细查看最近10个事务。 您可以通过该跟踪元素启用更大的结果集,滚动结果集和一堆其他漂亮的跟踪选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM