下图就是经过VSInstr处理后,反编译后的代码:
可以看到VSInstr程序修改了原来的DLL。在检测模式下,只有经过修改后的DLL才能收集到数据。
在VSTS中,一般可以通过Analyze菜单下的Launch Performance Wizard来新建一个性能会话,然后进行性能数据的采集。
对于ASP.NET程序,可以通过以下步骤来进行“采样”
iisreset /stop
VSPerfClrEnv /globalsampleon
VSPerfCmd /start:sample /user:”NETWORK SERVICE” /output:”d:\somewhere\xxxx.vsp”
VSPerfCmd /globaloff
iisreset /start
VSPerfCmd /attach:xxxx
VSPerfCmd /globalon–run the test scenario–
VSPerfCmd /globaloff
VSPerfCmd /detach
iisreset /stop
VSPerfCmd /shutdown
- 第一步是停掉IIS
- 然后通过VSPerfClrEnv对环境变量进行设置,具体可以查文档,做完这一步以后通常需要重启一下电脑
- 第三步就是通过VSPerfCmd启动性能数据收集
- 接下来的VSPerfCmd /globaloff就是暂停性能数据的收集
- 然后重启IIS,并且访问一下这个服务器上的页面,使得W3WP进程启动
- 查看W3WP.EXE的进程ID,然后通过VSPerfCmd /attach:xxxx把Profiler attach到IIS中
- 通过VSPerfCmd /globalon重新让Profiler进行性能数据的采集
- 然后就可以运行性能测试的场景
- 运行测试完毕以后就用VSPerfCmd /globaloff停止性能数据的采集
- 接着用VSPerfCmd /detach让Profiler不要附着在IIS上
- 停掉IIS — iisreset /stop
- 执行VSPerfCmd /shutdown,这一步执行完毕以后,在d:\somewhere\下就有一个xxxx.vsp的性能报告。
对于ASP.NET程序,可以通过以下步骤来进行“检测”
检测和采样其实是大同小异的,但是有一个关键的步骤就是在进行检测之前,一定要记得用VSInstr命令对需要进行检测的DLL或者EXE文件进行处理,建议一次不要检测太多文件,检测时间不要太长,因为检测所产生的数量是非常大的,产生的文件大小都是按G级别计算了。
iisreset /stop
VSPerfClrEnv /globaltraceon
VSPerfCmd /start:trace /user:”NETWORK SERVICE” /CS /output:”d:\xxx\0422.vsp”
VSPerfCmd /globaloff
iisreset /start
– 预热 –
VSPerfCmd /globalon–run code–
VSPerfCmd /globaloff
iisreset /stop
VSPerfCmd /shutdown
重复一次,在做以上的步骤之前必须要用VSInstr对目标二进制文件进行处理。这里详细步骤就不做解释了,命令的主要区别就是在做检测的时候,就免去了Attach到IIS这个步骤了。
采样和检测,前者是宏观的性能数据采集,后者是微观的性能数据采集。对于CPU负载较高的程序,用采样会得到比较好的效果;但是如果程序运行过程中并没有消耗很多的CPU资源,那么用采样可能就不能收集到太多有用的信息。所以在不同的场景下需要应用不同的性能数据收集方法。
文章来源于领测软件测试网 https://www.ltesting.net/