Dhw*_*hah 9 asp.net asp.net-mvc performance visual-studio-2010 iis-7.5
我有一个托管在Windows 7/IIS 7.5上的.Net Framework 4.0,ASP.NET,ASP.NET MVC 3 Web应用程序.在此计算机上启用IIS日志记录并设置为以W3C模式登录.
应用程序使用Release配置进行编译,并已使用<compilation debug='false'显式属性设置部署到IIS .Web.config指定使用基于SQL Server的会话状态.
我分别在BeginRequest和EndRequest事件中的Global.asax中添加了以下语句.结果即"sw.Elapsed.TotalMilliseconds"将存储在应用程序级别的值列表中.我通过调试页面转储这些值并获得相同的平均值.
// in BeginRequest
HttpContext.Current.Items.Add("RequestStartEnd", System.Diagnostics.Stopwatch.StartNew());
// in EndRequest
var sw = (System.Diagnostics.Stopwatch)HttpContext.Current.Items["RequestStartEnd"];
sw.Stop();
我创建了一个负载测试,它针对此应用程序运行单个请求,并发用20个用户的用户负载.该测试在Visual Studio 2010 Ultimate Edition中运行.
在运行负载测试之后,我得到了秒表记录的平均时间为681毫秒.这些请求的每个IIS的平均时间(我在运行负载测试之前清除了所有日志)是2121毫秒.IIS的平均时间与Visual Studio负载测试报告中显示的值相符.
秒表时间仅占IIS日志/ Visual Studio报告的时间的32%.其他68%的时间去哪儿了?
更新1: 我将会话状态设置为InProc并重新运行负载测试.在这种情况下,秒表报告的平均时间与IIS日志报告的平均时间之间的差异增长到70%以上!那段时间一直在哪里?
更新2: @Peter - 我通过设置跟踪规则来登录状态代码200来尝试失败的请求跟踪.接下来,我使用20个并发用户运行负载测试大约1.5分钟.经过最后50个跟踪文件,发现该报告中的"Time Taken"字段的范围为750ms到1300ms.Visual Studio报告显示平均值.时间为2300ms.在报告中,使用紧凑视图,我看到所需的时间在以下转换之间发生变化(1)AspNetStart - > AspNetAppDomainEnter(2)ManagedPipelineHandler-启动ManagedPipelineHandler-end.(2)项可能是我的应用程序代码.根据失败的请求日志(即1300毫秒)与平均值之间的最大时间间隔仍然存在很大差异.时间如Visual Studio 2300ms所示.如何找到会计?谢谢你这个伟大的提示!
有一种更好的方法来查看应用程序的内部结构,即使用“失败请求跟踪规则”
http://learn.iis.net/page.aspx/266/troubleshooting-failed-requests-using-tracing-in-iis-7/
这样您就可以准确地跟踪您的应用程序在 IIS 中执行的操作
| 归档时间: | 
 | 
| 查看次数: | 2236 次 | 
| 最近记录: |