鸿 网 互 联 www.68idc.cn

用Profiler监测Web应用

来源:互联网 作者:佚名 时间:2015-06-04 21:18
摘要 Profiler的功能之一是监视和报告SQL Server数据库在各个层次上的性能 但许多人忽视了Profiler作为一个Web开发工具的作用 其实 它可以用来观察Web应用程序如何与服务器交互 帮助我们分析代码的效率 正文 在SQL Server 和 中 许多人忽视了Profiler作为一

  摘要
  Profiler的功能之一是监视和报告SQL Server数据库在各个层次上的性能但许多人忽视了Profiler作为一个Web开发工具的作用其实它可以用来观察Web应用程序如何与服务器交互帮助我们分析代码的效率
  正文
  在SQL Server 许多人忽视了Profiler作为一个Web开发工具的作用Profiler的功能之一是监视和报告SQL Server数据库在各个层次上的性能可以用来观察Web应用程序如何与服务器交互此外Profiler还可以帮助我们分析代码的效率例如用Query Analyzer对代码进行优化之后我们可以用Profiler测定Web应用的性能是否提高
  
  为了生成用来分析Web应用与SQL Server通信情况的性能数据首先要测试几个页面选择一个能够为应用模拟出实际负载情况的测试工具然后运行Profiler观察负载情况例如你可以下载Web Application Stress Tool地址在Application Center也包含了该工具的一个升级版本Application Center是Microsoft的一个新产品当前正在进行Beta 测试
  
  用Profiler运行跟踪的时候保存结果的文件名字应该容易识别先进行几次测试接下来就可以比较每一步骤的结果每次运行之后你都必须启动一个新的跟踪而且每次都要保存跟踪另外你还可以保存跟踪再重演负载情况模拟数据库上的实际负载必须注意的是用Profiler或Query Analyzer重演负载只模拟出一个负载它与通过Web应用程序加载负载是不同的为了说明Profiler的应用下面是我进行的四个简单测试
  
  ▲ 测试一在ASP脚本中运行一个简单的查询首先我编写了Listing 显示的简单ASP脚本Databaseasp这个脚本包含了RunWithRS函数然后我编写了Web Listing 的脚本FirstDataasp它调用RunWithRS函数执行下面的查询
  
  sSQL = select ckeycol from testtable
  
  where ckey = a
  
  我在两个Web服务器上运行了FirstDataasp脚本第一台服务器是Windows 工作站 MHz Pentium CPUMB的RAM第二台服务器是Toshiba Tecra(MHz Pentium MB的RAM)运行Win K同时运行SQL Server
   
  我启动Profiler设置跟踪的属性然后开始了一个跟踪跟踪结果请参见图一在第一次测试中运行时间是相同的这个结果就象我们预料的一样因为无论从哪一个系统访问数据库都应该报告同样的响应时间测试中唯一的区别在于Web服务器但它不会影响数据库服务器的运行
  ▲ 测试二运行存储过程脚本文件是FirstDataasp在第二次测试中我用下面的SQL命令创建了存储过程
  
  
  
  CREATE PROCEDURE GetTestDataByKey
  
  @ckey char()
  
  
  AS
  
  
  SELECT ckeycol FROM testtable WHERE ckey = @ckey
  
  
  
  
  
  然后我修改sSQL参数运行该存储过程
  
  
  
  sSQL = exec GetTestDataByKey a
  
  
  
  
  
  第二次测试的运行时间是ms与第一次测试中的ms记录相比我们可以认为两者相似
  
  
  ▲ 测试三使用ADO的Command对象脚本文件FirstDataasp在第三次测试中我使用了ADO Command对象并为存储过程创建了一个参数集合Listing 显示了包含ADO代码的函数我开始了一个新的跟踪并把结果保存到tracetrc文件运行FirstDataasp即包含ADO代码和参数集合的asp脚本测试结果表明运行时间在ms到ms之间然后我停止了跟踪
  
  
  ▲ 测试四使用索引调整向导在最后一次测试中我从Tools菜单启动了Profiler的Index Tuning Wizard(索引调整向导)使用索引调整向导时在第一个屏幕上点击Next在第二个屏幕上选择正在测试的数据库然后点击Next在第三个屏幕上保持I have a saved workload file的选中状态点击Next(我们可以把跟踪或SQL保存为workload(工作负载)文件)在下一个屏幕上点击My Workload file按钮选择合适的工作负载文件然后点击Next在接着出现的屏幕上只选中正在进行测试的表(miscdata)点击Next
  
  接下来索引调整向导运用从数据库跟踪获得的工作负载分析负载情况当向导结束分析它提出了图二显示的索引建议图二的屏幕还显示了估计可以从索引获得的性能改善程度其中一次分析显示出性能可以改善大约%在性能数据屏幕上我点击Next在接下来出现的屏幕上我点击Apply Changes然后点击Next在最后出现的屏幕上我点击Finish使索引建议生效
  
  
  当我在新建索引的基础上再次进行测试结果显示索引调整向导改善了每一个页面的处理性能然而改进程度大约在百分之二十五左右无论是对于存储过程还是测试一的动态SQL命令结果都是一样的CPU的测试数据更令人感兴趣在修改索引之前CPU数据的记录范围是从ms到ms修改索引之后动态SQL的CPU数据下降到了ms而对于存储过程CPU数据下降到了ms和ms之间我们可以看到添加了一个索引之后性能有了显著的提高服务器的CPU负载显著地下降
  
  
  【小结】在这篇文章中我讨论了几个性能分析问题就象我所做的那样你可以测试几个页面得到初始的性能数据然后用Profiler深入剖析Web应用仔细观察服务器的活动情况例如在SQL Server处理SQL命令或存储过程的每一个步骤你可以获取其他各种重要的统计数据另外请记住按照索引调整向导的建议创建索引能够显著地提高性能
网友评论
<