2009-07-29 46 views
1

我对.NET开发一般来说相当陌生。我想在我的Web应用程序上做一些工具来调整性能,尤其是与缓存有关的性能。我写了很多自定义的动态生成的UserControl,我想尝试以不同的方式进行缓存 - 可能通过ASPX页面声明或编程方式。ASP.NET Web应用程序上的代码工具

我也有很多Oracle相互依赖的查询,我想查看这些查询的缓存结果,以查看哪些内容会提供最佳性能增益。

什么会去了解这一点的最好方法是什么?不知何故,我不认为用秒表观看IE浏览器加载页面是多少时间是最好的主意。我不知道我的缓存是否受到影响,或者是因为感觉到延迟而被忽略。 VS2008是否有内置的工具来协助?

回答

2

我最近工作的项目需要检查我们的SQL查询的时间,并将它们输出到调试模式下的调试侦听器。通过这种方式,我们可以评估SQL查询的执行时间以及执行时间,以及调试我们的网站代码。

  • 的executeQuery
  • 的ExecuteNonQuery
  • 的ExecuteScalar

他们确实使用了:

我通过集中了SQL查询到包装方法的3种类型的SQL方法,我们采用这样做Stopwatch类,但也有代码将查询转换为SQL语句,类似于在SQL Server Profiler中看到的。

每种方法是类似以下内容:

protected static object ExecuteScalar(SqlCommand comm, SqlParameter[] sqlParameters) 
{ 
    Stopwatch st = new Stopwatch(); 
    bool errorDetected = false; 

    try 
    { 
     comm.Parameters.Add(sqlParameters); 

     using(comm) 
     { 
       st.Start(); 
       object returnValue = comm.ExecuteScalar(); 
       st.Stop(); 
       return returnValue; 
     } 
    } 
    catch(Exception) 
    { 
     errorDetected = true; 
     st.Stop(); 
     throw; 
    } 
    finally 
    { 
     string output = GetSqlStringForParameters(sqlParameters,st.Elapsed,QueryType.Scalar); 

     if(errorDetected) 
     { 
       Debug.WriteLine("/*SQL (Errored)*/" + output,"DataAccess.SqlAdapter.ExecuteScalar"); 
     } 
     else 
     { 
       Debug.WriteLine("/*SQL*/" + output,"DataAccess.SqlAdapter.ExecuteScalar"); 
     } 
    } 
} 

这则输出DebugView.exe我们的SQL语句是这样的:

/*SQL*/ exec spsGetOrder @OrderNumber='234567' -- Rows returned = 1 ; 1 params |--> completed NonQuery in 0.0016144 seconds. 

这样做的好处是,虽然,是有是这些语句的瓶颈,我们可以直接将查询粘贴到SQL分析器中并获取查询的输出。这也意味着,如果您有查看日志文件的工具,则可以使用正则表达式来监视所用时间在特定范围内的位置。

所以,如果你想寻找超过0的查询。5秒,您可以搜索术语:

“在0 [5-9] \ d +” < - 一切超过0.5秒 或 更大 “在[1-9] \ d +” < - - 一切大超过1秒

这帮助我们非常关注我们的努力。它还可以帮助我们确定如果问题是数据库相关的,或者如上文提供的ASP.NET问题。

最后,有一个叫Fiddler这也可以帮助你诊断页面,因为他们来你的计算机的工具。这给你喜欢的文件大小,将图像/ CSS参考,下载时间信息。这在诊断ViewState大小问题时也非常有用。

我希望这有助于

1

我通常采用的方法是启用ASP.NET跟踪。有一个很好的指导,以启用this here。它非常详细,最好的是它是免费的。

需要关注的一件事是页面的大小(尤其是它的视图状态),这是页面执行代码后下载多长时间的重要部分。另一个是代码的某些部分呈现的速度有多快,可以通过在代码被执行测试之前和之后致电Trace.Write来实现。

使用ASP.NET跟踪的perf测试部分实际上只是一个指导,因为它不容易重复,但是很好。如果你想加强它,Visual Studio 2008 Team System中的工具可能会更好(尽管我没有使用过这些工具)。还有JetBrains dotTraceANTS Profiler

0

AppDynamics是一个很好的应用性能监控器,可与任何配置的测控仪表.NET应用程序。我认为可以用这个工具来解决你的问题。 http://www.appdynamics.com/

0

我已经与New Relic有很好的经验。很简单安装,非常清楚的仪表盘在其网站上,如果你碰巧主机上的Rackspace公司或亚马逊的云,他们通常提供免费升级到Pro帐户。检查他们!