<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>进化的测试 &#187; 性能测试</title>
	<atom:link href="http://magustest.com/blog/tag/loadtest/feed/" rel="self" type="application/rss+xml" />
	<link>http://magustest.com/blog</link>
	<description>关注软件测试，白盒测试，自动化测试，性能测试</description>
	<lastBuildDate>Wed, 02 Jun 2010 16:12:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>用VSTS Profiler发现性能问题并且进行优化实例</title>
		<link>http://magustest.com/blog/net/using-vsts-profiler-find-bottleneck-and-optimize/</link>
		<comments>http://magustest.com/blog/net/using-vsts-profiler-find-bottleneck-and-optimize/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 04:11:50 +0000</pubDate>
		<dc:creator>magus</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[性能测试]]></category>
		<category><![CDATA[Profiler]]></category>
		<category><![CDATA[VSTS]]></category>

		<guid isPermaLink="false">http://magustest.com/blog/?p=439</guid>
		<description><![CDATA[上一篇文章介绍了如何使用VSTS的Profiler，今天想分享一下对于一个ASP.NET应用程序，用Profiler找到性能问题并且对之进行优化。 由于ASP.NET程序运行在一个硕大的框架上，所以一般用Sample模式收集到的数据，对发现性能问题帮助不大，以下是一个用Sample模式收集的结果： 从这个报告中我们可以看到，前5个工作量最大的函数和执行单独工作最多的函数都是系统函数。 下面看一下有针对性地用检测模式收集的数据： 本文就采用“检测”模式收集性能数据来进行分析和处理。 首先，把本次测试的目标DLL用VSInstr工具进行处理，使得Profiler能够收集相关的性能数据，这一个步骤非常关键，通常来说不需要设置额外的参数，就是默认的方式就可以了，例如：VSInstr &#8220;D:\Websites\xxxx\bin\xxxx.dll&#8221;，在处理的过程中可能会提示一些错误，具体错误的信息可以在这里查找。把相应的DLL处理完毕以后，就在命令行输入以下指令（命令行的指令用斜体加下划线表示；说明文字加黑） 停止IIS iisreset /stop 设置分析.NET应用程序所需要的环境变量，在运行完这个命令以后需要重启。由于使用检测方式进行数据采集，所以这里我用globaltraceon参数。 VSPerfClrEnv /globaltraceon 启动性能数据收集。/start:trace，告诉收集器要收集检测数据；/user:&#8221;NETWORK SERVICE&#8221; ，由于是要对IIS进行的数据进行采集，所以需要制定用户NETWORK SERVICE；/CS，启用跨进程分析，看了一些文章说是分析ASP.NET程序一般都把这个选项打开，原因不详；/output:&#8221;d:\magus\0422.vsp&#8221;，指定输出文件的路径和名称；/wincounter:&#8221;\Processor(_Total)\% Processor Time&#8221;，收集处理器的参数，这里需要注意的是，wincouter后面的性能计数器名字一定要是全名，有一个方法可以查询系统的性能计数器的全称，就是用VSTS的Server Explorer，然后找到相应的服务器(一般是本机)，下面有一个“Performance Counters”；如果要收集多个性能计数器的数据，只需要多加几个 /wincounter 参数即可，例如我在收集处理器时间的同时，还想知道Context Switcher每秒的数据。 VSPerfCmd /start:trace /user:&#8221;NETWORK SERVICE&#8221; /CS /output:&#8221;d:\magus\0422.vsp&#8221; /wincounter:&#8221;\Processor(_Total)\% Processor Time&#8221; /wincounter:&#8221;\System\Context Switches/sec&#8221; 在IIS起来之前先停止性能数据的收集 VSPerfCmd /globaloff 启动IIS iisreset /start 对程序进行预热，这一步也是很关键，因为IIS启动以后，程序需要预热才能达到稳定的状态，因为程序首次被访问的时候有些代码会被编译，所以为了降低对性能测试的影响，应该现对被测的程序进行预热。在预热完毕以后重新启动性能数据的收集。 VSPerfCmd /globalon &#8211; 运行性能测试场景 &#8211; 测试运行完毕以后，停止性能数据的收集 VSPerfCmd /globaloff 停掉IIS iisreset /stop 关闭性能数据收集器，这一步完成以后就能生成包含数据的文件了 VSPerfCmd [...]


Related posts:<ol><li><a href='http://magustest.com/blog/net/intruduction-to-vsts-profile/' rel='bookmark' title='Permanent Link: VSTS性能分析工具Profiler的介绍'>VSTS性能分析工具Profiler的介绍</a></li>
<li><a href='http://magustest.com/blog/softwaretesting/collecting-aspnet-code-coverage-date-using-vsperfmon/' rel='bookmark' title='Permanent Link: 用VSPerfMon在测试ASP.NET程序的过程中收集代码覆盖率信息'>用VSPerfMon在测试ASP.NET程序的过程中收集代码覆盖率信息</a></li>
<li><a href='http://magustest.com/blog/linux/setup-snmpd-conf/' rel='bookmark' title='Permanent Link: Linux下的snmpd.conf配置说明'>Linux下的snmpd.conf配置说明</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>上一篇文章介绍了<a href="http://magustest.com/blog/net/intruduction-to-vsts-profile/" target="_blank">如何使用VSTS的Profiler</a>，今天想分享一下对于一个ASP.NET应用程序，用Profiler找到性能问题并且对之进行优化。</p>
<p>由于ASP.NET程序运行在一个硕大的框架上，所以一般用Sample模式收集到的数据，对发现性能问题帮助不大，以下是一个用Sample模式收集的结果：</p>
<p><img class="alignnone size-full wp-image-442" title="iis-sample" src="http://magustest.com/blog/wp-content/uploads/2009/04/iis-sample1.png" alt="iis-sample" width="549" height="236" /></p>
<p>从这个报告中我们可以看到，前5个工作量最大的函数和执行单独工作最多的函数都是系统函数。</p>
<p>下面看一下有针对性地用检测模式收集的数据：</p>
<p><img class="alignnone size-full wp-image-444" title="instr-function-with-indi-work1" src="http://magustest.com/blog/wp-content/uploads/2009/04/instr-function-with-indi-work11.png" alt="instr-function-with-indi-work1" width="532" height="139" /></p>
<p>本文就采用“检测”模式收集性能数据来进行分析和处理。</p>
<p>首先，把本次测试的目标DLL用VSInstr工具进行处理，使得Profiler能够收集相关的性能数据，这一个步骤非常关键，通常来说不需要设置额外的参数，就是默认的方式就可以了，例如：VSInstr &#8220;D:\Websites\xxxx\bin\xxxx.dll&#8221;，在处理的过程中可能会提示一些错误，具体错误的信息可以在<a href="http://msdn.microsoft.com/en-us/library/ms242734.aspx" target="_blank">这里</a>查找。把相应的DLL处理完毕以后，就在命令行输入以下指令（命令行的指令用斜体加下划线表示；说明文字加黑）<br />
<span id="more-439"></span><br />
<strong>停止IIS</strong></p>
<p><span style="text-decoration: underline;"><em>iisreset /stop</em></span></p>
<p><strong>设置分析.NET应用程序所需要的环境变量，在运行完这个命令以后需要重启。由于使用检测方式进行数据采集，所以这里我用globaltraceon参数。</strong></p>
<p><span style="text-decoration: underline;"><em>VSPerfClrEnv /globaltraceon</em></span></p>
<p><strong>启动性能数据收集。<span style="text-decoration: underline;">/start:trace</span>，告诉收集器要收集检测数据；/user:&#8221;NETWORK SERVICE&#8221; ，由于是要对IIS进行的数据进行采集，所以需要制定用户NETWORK SERVICE；<span style="text-decoration: underline;">/CS</span>，启用跨进程分析，看了一些文章说是分析ASP.NET程序一般都把这个选项打开，原因不详；<span style="text-decoration: underline;">/output:&#8221;d:\magus\0422.vsp&#8221;</span>，指定输出文件的路径和名称；<span style="text-decoration: underline;">/wincounter:&#8221;\Processor(_Total)\% Processor Time&#8221;</span>，收集处理器的参数，这里需要注意的是，wincouter后面的性能计数器名字一定要是全名，有一个方法可以查询系统的性能计数器的全称，就是用VSTS的Server Explorer，然后找到相应的服务器(一般是本机)，下面有一个“Performance Counters”；如果要收集多个性能计数器的数据，只需要多加几个 /wincounter 参数即可，例如我在收集处理器时间的同时，还想知道Context Switcher每秒的数据。</strong></p>
<p><span style="text-decoration: underline;"><em>VSPerfCmd /start:trace /user:&#8221;NETWORK SERVICE&#8221; /CS /output:&#8221;d:\magus\0422.vsp&#8221; /wincounter:&#8221;\Processor(_Total)\% Processor Time&#8221; /wincounter:&#8221;\System\Context Switches/sec&#8221;</em></span></p>
<p><strong>在IIS起来之前先停止性能数据的收集</strong></p>
<p><span style="text-decoration: underline;"><em>VSPerfCmd /globaloff</em></span></p>
<p><strong>启动IIS</strong></p>
<p><em><span style="text-decoration: underline;">iisreset /start</span></em></p>
<p><strong>对程序进行预热，这一步也是很关键，因为IIS启动以后，程序需要预热才能达到稳定的状态，因为程序首次被访问的时候有些代码会被编译，所以为了降低对性能测试的影响，应该现对被测的程序进行预热。在预热完毕以后重新启动性能数据的收集。</strong></p>
<p><em><span style="text-decoration: underline;">VSPerfCmd /globalon</span></em></p>
<p><strong>&#8211; 运行性能测试场景 &#8211;<br />
</strong></p>
<p><strong>测试运行完毕以后，停止性能数据的收集</strong></p>
<p><em><span style="text-decoration: underline;">VSPerfCmd /globaloff</span></em></p>
<p><strong>停掉IIS</strong></p>
<p><em><span style="text-decoration: underline;">iisreset /stop</span></em></p>
<p><strong>关闭性能数据收集器，这一步完成以后就能生成包含数据的文件了</strong></p>
<p><em><span style="text-decoration: underline;">VSPerfCmd /shutdown</span></em></p>
<p>首先来看看收集到的报告</p>
<p><img class="alignnone size-full wp-image-447" title="time-before-opt1" src="http://magustest.com/blog/wp-content/uploads/2009/04/time-before-opt11.png" alt="time-before-opt1" width="547" height="55" /></p>
<p>在这个方法里面有一段不知名方法（其实是因为没有相应的Symbol，⊙﹏⊙b汗）占用了大量的计算时间，然后就找到相应的代码，原来该不知名方法是一个动态生成的代码，该段代码大概就是会创建一个新的Client对象，然后向另外一台服务器发起一个请求。其实不用每次调用该方法都创建一个新的Client对象。然后我尝试着把这个Client改为静态变量，经过优化以后的报告对比如下：</p>
<p><img class="alignnone size-full wp-image-448" title="time-after-opt" src="http://magustest.com/blog/wp-content/uploads/2009/04/time-after-opt1.png" alt="time-after-opt" width="523" height="251" /></p>
<p>效果还是挺明显的，但是当我重新测试一下性能的时候，被打击了一下，改动前后的性能对比相差很小，小的都可以认为是误差：P，因为在一个颇为庞大的项目中，这点小小的改动的确不可能影响大局。不过这次试验让我学会了用Profiler来找到ASP.NET运行中执行较慢的语句，并且看看这些语句有什么问题（可能是一个调用存储过程的方法很慢，而真正的原因是数据库有问题），定位问题所在，然后解决问题，最后回测一下对比改动前后的结果。看是否达到预期的优化效果。</p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://magustest.com/blog/feed/" title="RSS"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a>
	<img src="http://magustest.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<img src="http://magustest.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<img src="http://magustest.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fusing-vsts-profiler-find-bottleneck-and-optimize%2F&amp;t=%E7%94%A8VSTS%20Profiler%E5%8F%91%E7%8E%B0%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98%E5%B9%B6%E4%B8%94%E8%BF%9B%E8%A1%8C%E4%BC%98%E5%8C%96%E5%AE%9E%E4%BE%8B" title="Facebook"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.douban.com/recommend/?url=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fusing-vsts-profiler-find-bottleneck-and-optimize%2F&title=%E7%94%A8VSTS%20Profiler%E5%8F%91%E7%8E%B0%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98%E5%B9%B6%E4%B8%94%E8%BF%9B%E8%A1%8C%E4%BC%98%E5%8C%96%E5%AE%9E%E4%BE%8B" title="豆瓣"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/douban.png" title="豆瓣" alt="豆瓣" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.douban.com/recommend/?url=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fusing-vsts-profiler-find-bottleneck-and-optimize%2F&title=%E7%94%A8VSTS%20Profiler%E5%8F%91%E7%8E%B0%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98%E5%B9%B6%E4%B8%94%E8%BF%9B%E8%A1%8C%E4%BC%98%E5%8C%96%E5%AE%9E%E4%BE%8B&n=1" title="豆瓣九点"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/douban9.png" title="豆瓣九点" alt="豆瓣九点" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=%E7%94%A8VSTS%20Profiler%E5%8F%91%E7%8E%B0%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98%E5%B9%B6%E4%B8%94%E8%BF%9B%E8%A1%8C%E4%BC%98%E5%8C%96%E5%AE%9E%E4%BE%8B&amp;link=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fusing-vsts-profiler-find-bottleneck-and-optimize%2F" title="FriendFeed"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<img src="http://magustest.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fusing-vsts-profiler-find-bottleneck-and-optimize%2F&amp;title=%E7%94%A8VSTS%20Profiler%E5%8F%91%E7%8E%B0%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98%E5%B9%B6%E4%B8%94%E8%BF%9B%E8%A1%8C%E4%BC%98%E5%8C%96%E5%AE%9E%E4%BE%8B" title="Live"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://ping.fm/ref/?link=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fusing-vsts-profiler-find-bottleneck-and-optimize%2F&amp;title=%E7%94%A8VSTS%20Profiler%E5%8F%91%E7%8E%B0%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98%E5%B9%B6%E4%B8%94%E8%BF%9B%E8%A1%8C%E4%BC%98%E5%8C%96%E5%AE%9E%E4%BE%8B&amp;body=%E4%B8%8A%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E4%BB%8B%E7%BB%8D%E4%BA%86%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8VSTS%E7%9A%84Profiler%EF%BC%8C%E4%BB%8A%E5%A4%A9%E6%83%B3%E5%88%86%E4%BA%AB%E4%B8%80%E4%B8%8B%E5%AF%B9%E4%BA%8E%E4%B8%80%E4%B8%AAASP.NET%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%8C%E7%94%A8Profiler%E6%89%BE%E5%88%B0%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98%E5%B9%B6%E4%B8%94%E5%AF%B9%E4%B9%8B%E8%BF%9B%E8%A1%8C%E4%BC%98%E5%8C%96%E3%80%82%0A%0A%E7%94%B1%E4%BA%8EASP.NET%E7%A8%8B%E5%BA%8F%E8%BF%90%E8%A1%8C%E5%9C%A8%E4%B8%80%E4%B8%AA%E7%A1%95%E5%A4%A7%E7%9A%84%E6%A1%86%E6%9E%B6%E4%B8%8A%EF%BC%8C%E6%89%80%E4%BB%A5%E4%B8%80%E8%88%AC%E7%94%A8Sample%E6%A8%A1%E5%BC%8F%E6" title="Ping.fm"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/ping.png" title="Ping.fm" alt="Ping.fm" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://shuqian.qq.com/post?jumpback=1&title=%E7%94%A8VSTS%20Profiler%E5%8F%91%E7%8E%B0%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98%E5%B9%B6%E4%B8%94%E8%BF%9B%E8%A1%8C%E4%BC%98%E5%8C%96%E5%AE%9E%E4%BE%8B&uri=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fusing-vsts-profiler-find-bottleneck-and-optimize%2F" title="QQ书签"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/qq.png" title="QQ书签" alt="QQ书签" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=%E7%94%A8VSTS%20Profiler%E5%8F%91%E7%8E%B0%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98%E5%B9%B6%E4%B8%94%E8%BF%9B%E8%A1%8C%E4%BC%98%E5%8C%96%E5%AE%9E%E4%BE%8B%20-%20http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fusing-vsts-profiler-find-bottleneck-and-optimize%2F" title="Twitter"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>

<p>Related posts:<ol><li><a href='http://magustest.com/blog/net/intruduction-to-vsts-profile/' rel='bookmark' title='Permanent Link: VSTS性能分析工具Profiler的介绍'>VSTS性能分析工具Profiler的介绍</a></li>
<li><a href='http://magustest.com/blog/softwaretesting/collecting-aspnet-code-coverage-date-using-vsperfmon/' rel='bookmark' title='Permanent Link: 用VSPerfMon在测试ASP.NET程序的过程中收集代码覆盖率信息'>用VSPerfMon在测试ASP.NET程序的过程中收集代码覆盖率信息</a></li>
<li><a href='http://magustest.com/blog/linux/setup-snmpd-conf/' rel='bookmark' title='Permanent Link: Linux下的snmpd.conf配置说明'>Linux下的snmpd.conf配置说明</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://magustest.com/blog/net/using-vsts-profiler-find-bottleneck-and-optimize/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VSTS性能分析工具Profiler的介绍</title>
		<link>http://magustest.com/blog/net/intruduction-to-vsts-profile/</link>
		<comments>http://magustest.com/blog/net/intruduction-to-vsts-profile/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 08:41:23 +0000</pubDate>
		<dc:creator>magus</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[性能测试]]></category>
		<category><![CDATA[Profiler]]></category>
		<category><![CDATA[VSTS]]></category>

		<guid isPermaLink="false">http://magustest.com/blog/?p=426</guid>
		<description><![CDATA[在MSDN文档中，对于VSTS中的Development Edition的介绍主要分两大块，第一是“编写高质量的代码”，第二就是“使用分析工具对应用程序性能进行分析”。在VSTS里面有一个工具，叫Profiler，这个工具可以帮助研发人员在程序运行的过程中收集相关的数据，并且对之进行分析，从而达到帮助实现性能调优的目的。本文讲述如何在使用命令行工具来对ASP.NET程序进行性能测试相关数据的收集。 在VSTS的Profiler中，有两种(VSTS2010好像有5种了)Profiling的方法，第一种是采样(Sampling)，第二种是检测(Instrumentation)。对于采样模式，它的工作原理是Profiler定期中断CPU并且收集函数的调用堆栈信息。在网上找到一个图，对于采样工作方式的描述非常清晰： 对于检测模式，他的工作原理是用VSInstr程序在原始的代码中插入一些用于计算时间的代码，例如A函数调用B函数，那么在调用B函数的前后都会被插入用于计算时间的代码，具体可以看下图： 下面我自己写了一个小的Sample类，然后把编译好的代码用Reflector来查看，很容易地就能看出区别。第一个图是没有经过VSInstr处理的原始代码： 下图就是经过VSInstr处理后，反编译后的代码： 可以看到VSInstr程序修改了原来的DLL。在检测模式下，只有经过修改后的DLL才能收集到数据。 在VSTS中，一般可以通过Analyze菜单下的Launch Performance Wizard来新建一个性能会话，然后进行性能数据的采集。 对于ASP.NET程序，可以通过以下步骤来进行“采样” iisreset /stop VSPerfClrEnv /globalsampleon VSPerfCmd /start:sample /user:&#8221;NETWORK SERVICE&#8221; /output:&#8221;d:\somewhere\xxxx.vsp&#8221; VSPerfCmd /globaloff iisreset /start VSPerfCmd /attach:xxxx VSPerfCmd /globalon &#8211;run the test scenario&#8211; 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 [...]


Related posts:<ol><li><a href='http://magustest.com/blog/net/using-vsts-profiler-find-bottleneck-and-optimize/' rel='bookmark' title='Permanent Link: 用VSTS Profiler发现性能问题并且进行优化实例'>用VSTS Profiler发现性能问题并且进行优化实例</a></li>
<li><a href='http://magustest.com/blog/softwaretesting/collecting-aspnet-code-coverage-date-using-vsperfmon/' rel='bookmark' title='Permanent Link: 用VSPerfMon在测试ASP.NET程序的过程中收集代码覆盖率信息'>用VSPerfMon在测试ASP.NET程序的过程中收集代码覆盖率信息</a></li>
<li><a href='http://magustest.com/blog/softwaretesting/vsts2010-test-edition-article-collection/' rel='bookmark' title='Permanent Link: VSTS 2010 Test Edition文章收集'>VSTS 2010 Test Edition文章收集</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>在<a href="http://msdn.microsoft.com/zh-cn/library/47f7hz7y.aspx" target="_blank">MSDN文档</a>中，对于VSTS中的Development Edition的介绍主要分两大块，第一是“编写高质量的代码”，第二就是“使用分析工具对应用程序性能进行分析”。在VSTS里面有一个工具，叫Profiler，这个工具可以帮助研发人员在程序运行的过程中收集相关的数据，并且对之进行分析，从而达到帮助实现性能调优的目的。本文讲述如何在使用命令行工具来对ASP.NET程序进行性能测试相关数据的收集。</p>
<p>在VSTS的Profiler中，有两种(VSTS2010好像有5种了)Profiling的方法，第一种是采样(Sampling)，第二种是检测(Instrumentation)。对于采样模式，它的工作原理是Profiler定期中断CPU并且收集函数的调用堆栈信息。在网上找到一个图，对于采样工作方式的描述非常清晰：</p>
<p><img class="alignnone size-full wp-image-429" title="how-sampling-works" src="http://magustest.com/blog/wp-content/uploads/2009/04/how-sampling-works1.jpg" alt="how-sampling-works" width="500" height="330" /></p>
<p>对于检测模式，他的工作原理是用VSInstr程序在原始的代码中插入一些用于计算时间的代码，例如A函数调用B函数，那么在调用B函数的前后都会被插入用于计算时间的代码，具体可以看下图：<br />
<span id="more-426"></span><br />
<img class="alignnone size-full wp-image-430" title="how-instr-works" src="http://magustest.com/blog/wp-content/uploads/2009/04/how-instr-works1.jpg" alt="how-instr-works" width="600" height="300" /></p>
<p>下面我自己写了一个小的Sample类，然后把编译好的代码用Reflector来查看，很容易地就能看出区别。第一个图是没有经过VSInstr处理的原始代码：</p>
<p><img class="alignnone size-full wp-image-431" title="before-instr" src="http://magustest.com/blog/wp-content/uploads/2009/04/before-instr1.png" alt="before-instr" width="351" height="274" /></p>
<p>下图就是经过VSInstr处理后，反编译后的代码：</p>
<p><img class="alignnone size-full wp-image-432" title="after-instr" src="http://magustest.com/blog/wp-content/uploads/2009/04/after-instr1.png" alt="after-instr" width="600" height="356" /></p>
<p>可以看到VSInstr程序修改了原来的DLL。在检测模式下，只有经过修改后的DLL才能收集到数据。</p>
<p>在VSTS中，一般可以通过Analyze菜单下的Launch Performance Wizard来新建一个性能会话，然后进行性能数据的采集。</p>
<p><span style="font-size: medium;"><strong>对于ASP.NET程序，可以通过以下步骤来进行“采样”</strong></span></p>
<blockquote><p>iisreset /stop<br />
VSPerfClrEnv /globalsampleon<br />
VSPerfCmd /start:sample /user:&#8221;NETWORK SERVICE&#8221; /output:&#8221;d:\somewhere\xxxx.vsp&#8221;<br />
VSPerfCmd /globaloff<br />
iisreset /start<br />
VSPerfCmd /attach:xxxx<br />
VSPerfCmd /globalon</p>
<p>&#8211;run the test scenario&#8211;</p>
<p>VSPerfCmd /globaloff<br />
VSPerfCmd /detach<br />
iisreset /stop<br />
VSPerfCmd /shutdown</p></blockquote>
<ol>
<li>第一步是停掉IIS</li>
<li>然后通过VSPerfClrEnv对环境变量进行设置，具体可以查文档，做完这一步以后通常需要重启一下电脑</li>
<li>第三步就是通过VSPerfCmd启动性能数据收集</li>
<li>接下来的VSPerfCmd /globaloff就是暂停性能数据的收集</li>
<li>然后重启IIS，并且访问一下这个服务器上的页面，使得W3WP进程启动</li>
<li>查看W3WP.EXE的进程ID，然后通过VSPerfCmd /attach:xxxx把Profiler attach到IIS中</li>
<li>通过VSPerfCmd /globalon重新让Profiler进行性能数据的采集</li>
<li>然后就可以运行性能测试的场景</li>
<li>运行测试完毕以后就用VSPerfCmd /globaloff停止性能数据的采集</li>
<li>接着用VSPerfCmd /detach让Profiler不要附着在IIS上</li>
<li>停掉IIS &#8212; iisreset /stop</li>
<li>执行VSPerfCmd /shutdown，这一步执行完毕以后，在d:\somewhere\下就有一个xxxx.vsp的性能报告。</li>
</ol>
<p><span style="font-size: medium;"><strong>对于ASP.NET程序，可以通过以下步骤来进行“检测”</strong></span></p>
<p>检测和采样其实是大同小异的，但是有一个关键的步骤就是在进行检测之前，一定要记得用VSInstr命令对需要进行检测的DLL或者EXE文件进行处理，建议一次不要检测太多文件，检测时间不要太长，因为检测所产生的数量是非常大的，产生的文件大小都是按G级别计算了。</p>
<blockquote><p>iisreset /stop<br />
VSPerfClrEnv /globaltraceon<br />
VSPerfCmd /start:trace /user:&#8221;NETWORK SERVICE&#8221; /CS /output:&#8221;d:\xxx\0422.vsp&#8221;<br />
VSPerfCmd /globaloff<br />
iisreset /start<br />
&#8211; 预热 &#8211;<br />
VSPerfCmd /globalon</p>
<p>&#8211;run code&#8211;</p>
<p>VSPerfCmd /globaloff<br />
iisreset /stop<br />
VSPerfCmd /shutdown</p></blockquote>
<p>重复一次，在做以上的步骤之前必须要用VSInstr对目标二进制文件进行处理。这里详细步骤就不做解释了，命令的主要区别就是在做检测的时候，就免去了Attach到IIS这个步骤了。</p>
<p>采样和检测，前者是宏观的性能数据采集，后者是微观的性能数据采集。对于CPU负载较高的程序，用采样会得到比较好的效果；但是如果程序运行过程中并没有消耗很多的CPU资源，那么用采样可能就不能收集到太多有用的信息。所以在不同的场景下需要应用不同的性能数据收集方法。</p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://magustest.com/blog/feed/" title="RSS"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fintruduction-to-vsts-profile%2F&amp;title=VSTS%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7Profiler%E7%9A%84%E4%BB%8B%E7%BB%8D&amp;annotation=%E5%9C%A8MSDN%E6%96%87%E6%A1%A3%E4%B8%AD%EF%BC%8C%E5%AF%B9%E4%BA%8EVSTS%E4%B8%AD%E7%9A%84Development%20Edition%E7%9A%84%E4%BB%8B%E7%BB%8D%E4%B8%BB%E8%A6%81%E5%88%86%E4%B8%A4%E5%A4%A7%E5%9D%97%EF%BC%8C%E7%AC%AC%E4%B8%80%E6%98%AF%E2%80%9C%E7%BC%96%E5%86%99%E9%AB%98%E8%B4%A8%E9%87%8F%E7%9A%84%E4%BB%A3%E7%A0%81%E2%80%9D%EF%BC%8C%E7%AC%AC%E4%BA%8C%E5%B0%B1%E6%98%AF%E2%80%9C%E4%BD%BF%E7%94%A8%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7%E5%AF%B9%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%80%A7%E8%83%BD%E8%BF%9B%E8%A1%8C%E5%88%86%E6%9E%90%E2%80%9D%E3%80%82%E5%9C%A8VSTS%E9%87%8C%E9%9D%A2%E6%9C%89%E4%B8%80%E4%B8%AA%E5%B7%A5%E5%85%B7%EF%BC%8C%E5%8F%ABProfiler%EF%BC%8C%E8%BF%99%E4%B8%AA%E5" title="Google Bookmarks"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fintruduction-to-vsts-profile%2F&amp;title=VSTS%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7Profiler%E7%9A%84%E4%BB%8B%E7%BB%8D&amp;bodytext=%E5%9C%A8MSDN%E6%96%87%E6%A1%A3%E4%B8%AD%EF%BC%8C%E5%AF%B9%E4%BA%8EVSTS%E4%B8%AD%E7%9A%84Development%20Edition%E7%9A%84%E4%BB%8B%E7%BB%8D%E4%B8%BB%E8%A6%81%E5%88%86%E4%B8%A4%E5%A4%A7%E5%9D%97%EF%BC%8C%E7%AC%AC%E4%B8%80%E6%98%AF%E2%80%9C%E7%BC%96%E5%86%99%E9%AB%98%E8%B4%A8%E9%87%8F%E7%9A%84%E4%BB%A3%E7%A0%81%E2%80%9D%EF%BC%8C%E7%AC%AC%E4%BA%8C%E5%B0%B1%E6%98%AF%E2%80%9C%E4%BD%BF%E7%94%A8%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7%E5%AF%B9%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%80%A7%E8%83%BD%E8%BF%9B%E8%A1%8C%E5%88%86%E6%9E%90%E2%80%9D%E3%80%82%E5%9C%A8VSTS%E9%87%8C%E9%9D%A2%E6%9C%89%E4%B8%80%E4%B8%AA%E5%B7%A5%E5%85%B7%EF%BC%8C%E5%8F%ABProfiler%EF%BC%8C%E8%BF%99%E4%B8%AA%E5" title="Digg"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fintruduction-to-vsts-profile%2F&amp;title=VSTS%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7Profiler%E7%9A%84%E4%BB%8B%E7%BB%8D&amp;notes=%E5%9C%A8MSDN%E6%96%87%E6%A1%A3%E4%B8%AD%EF%BC%8C%E5%AF%B9%E4%BA%8EVSTS%E4%B8%AD%E7%9A%84Development%20Edition%E7%9A%84%E4%BB%8B%E7%BB%8D%E4%B8%BB%E8%A6%81%E5%88%86%E4%B8%A4%E5%A4%A7%E5%9D%97%EF%BC%8C%E7%AC%AC%E4%B8%80%E6%98%AF%E2%80%9C%E7%BC%96%E5%86%99%E9%AB%98%E8%B4%A8%E9%87%8F%E7%9A%84%E4%BB%A3%E7%A0%81%E2%80%9D%EF%BC%8C%E7%AC%AC%E4%BA%8C%E5%B0%B1%E6%98%AF%E2%80%9C%E4%BD%BF%E7%94%A8%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7%E5%AF%B9%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%80%A7%E8%83%BD%E8%BF%9B%E8%A1%8C%E5%88%86%E6%9E%90%E2%80%9D%E3%80%82%E5%9C%A8VSTS%E9%87%8C%E9%9D%A2%E6%9C%89%E4%B8%80%E4%B8%AA%E5%B7%A5%E5%85%B7%EF%BC%8C%E5%8F%ABProfiler%EF%BC%8C%E8%BF%99%E4%B8%AA%E5" title="del.icio.us"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fintruduction-to-vsts-profile%2F&amp;t=VSTS%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7Profiler%E7%9A%84%E4%BB%8B%E7%BB%8D" title="Facebook"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.douban.com/recommend/?url=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fintruduction-to-vsts-profile%2F&title=VSTS%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7Profiler%E7%9A%84%E4%BB%8B%E7%BB%8D" title="豆瓣"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/douban.png" title="豆瓣" alt="豆瓣" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.douban.com/recommend/?url=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fintruduction-to-vsts-profile%2F&title=VSTS%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7Profiler%E7%9A%84%E4%BB%8B%E7%BB%8D&n=1" title="豆瓣九点"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/douban9.png" title="豆瓣九点" alt="豆瓣九点" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=VSTS%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7Profiler%E7%9A%84%E4%BB%8B%E7%BB%8D&amp;link=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fintruduction-to-vsts-profile%2F" title="FriendFeed"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<img src="http://magustest.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fintruduction-to-vsts-profile%2F&amp;title=VSTS%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7Profiler%E7%9A%84%E4%BB%8B%E7%BB%8D" title="Live"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://ping.fm/ref/?link=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fintruduction-to-vsts-profile%2F&amp;title=VSTS%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7Profiler%E7%9A%84%E4%BB%8B%E7%BB%8D&amp;body=%E5%9C%A8MSDN%E6%96%87%E6%A1%A3%E4%B8%AD%EF%BC%8C%E5%AF%B9%E4%BA%8EVSTS%E4%B8%AD%E7%9A%84Development%20Edition%E7%9A%84%E4%BB%8B%E7%BB%8D%E4%B8%BB%E8%A6%81%E5%88%86%E4%B8%A4%E5%A4%A7%E5%9D%97%EF%BC%8C%E7%AC%AC%E4%B8%80%E6%98%AF%E2%80%9C%E7%BC%96%E5%86%99%E9%AB%98%E8%B4%A8%E9%87%8F%E7%9A%84%E4%BB%A3%E7%A0%81%E2%80%9D%EF%BC%8C%E7%AC%AC%E4%BA%8C%E5%B0%B1%E6%98%AF%E2%80%9C%E4%BD%BF%E7%94%A8%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7%E5%AF%B9%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%80%A7%E8%83%BD%E8%BF%9B%E8%A1%8C%E5%88%86%E6%9E%90%E2%80%9D%E3%80%82%E5%9C%A8VSTS%E9%87%8C%E9%9D%A2%E6%9C%89%E4%B8%80%E4%B8%AA%E5%B7%A5%E5%85%B7%EF%BC%8C%E5%8F%ABProfiler%EF%BC%8C%E8%BF%99%E4%B8%AA%E5" title="Ping.fm"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/ping.png" title="Ping.fm" alt="Ping.fm" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://shuqian.qq.com/post?jumpback=1&title=VSTS%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7Profiler%E7%9A%84%E4%BB%8B%E7%BB%8D&uri=http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fintruduction-to-vsts-profile%2F" title="QQ书签"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/qq.png" title="QQ书签" alt="QQ书签" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=VSTS%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7Profiler%E7%9A%84%E4%BB%8B%E7%BB%8D%20-%20http%3A%2F%2Fmagustest.com%2Fblog%2Fnet%2Fintruduction-to-vsts-profile%2F" title="Twitter"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>

<p>Related posts:<ol><li><a href='http://magustest.com/blog/net/using-vsts-profiler-find-bottleneck-and-optimize/' rel='bookmark' title='Permanent Link: 用VSTS Profiler发现性能问题并且进行优化实例'>用VSTS Profiler发现性能问题并且进行优化实例</a></li>
<li><a href='http://magustest.com/blog/softwaretesting/collecting-aspnet-code-coverage-date-using-vsperfmon/' rel='bookmark' title='Permanent Link: 用VSPerfMon在测试ASP.NET程序的过程中收集代码覆盖率信息'>用VSPerfMon在测试ASP.NET程序的过程中收集代码覆盖率信息</a></li>
<li><a href='http://magustest.com/blog/softwaretesting/vsts2010-test-edition-article-collection/' rel='bookmark' title='Permanent Link: VSTS 2010 Test Edition文章收集'>VSTS 2010 Test Edition文章收集</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://magustest.com/blog/net/intruduction-to-vsts-profile/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>图解微软性能测试工具VSTS2008 Load Test Agent安装</title>
		<link>http://magustest.com/blog/loadtest/vsts-load-controller-and-load-agent-installation/</link>
		<comments>http://magustest.com/blog/loadtest/vsts-load-controller-and-load-agent-installation/#comments</comments>
		<pubDate>Fri, 26 Dec 2008 16:18:35 +0000</pubDate>
		<dc:creator>magus</dc:creator>
				<category><![CDATA[性能测试]]></category>
		<category><![CDATA[VSTS]]></category>

		<guid isPermaLink="false">http://magustest.com/blog/?p=251</guid>
		<description><![CDATA[最近在用VSTS做性能测试的时候发现本地发起请求只能占用1个CPU，其余的CPU都是空闲的，上网查了一下，这个是因为用VSTS做性能测试的时候，发起压力的进程是VSTESTHost.exe，如果想让多核CPU的每一个CPU都产生压力，需要安装使用Visual Studio Team System Test Load Agent。这个工具是要钱的，即使你订阅了MSDN的什么版本，在下载中心里面下载到的都是90天试用版，可能也是因为这个原因，网上很少资料介绍如何安装和使用这个Load Agent。经过1个下午的摸索，成功配置成功，以下是在Windows Server 2003下安装Visual Studio Team System Test Load Agent的过程，VSTS，Controller和Agent都安装在同一台电脑上。 首先安装VSTS2008。 然后去微软的网站下载Visual Studio Team System Test Load Agent试用版。是一个ISO文件，用虚拟光驱挂上，然后开始安装。 如果要把Controller和Agent都安装在同一台电脑上，需要先安装Controller。安装的时候需要输入Windows的帐户和密码。整个过程不会太长，期间会默认安装SQL 2005 EXPRESS版，因为controller需要把测试的结果记录在数据库中。 安装好了controller以后，就可以安装Load Agent了，如图，也是需要输入windows的帐户和密码： 安装Agent会比安装controller多一个步骤，就是要指定controller，这里需要输入的controller的计算机名字，而不是什么LocalHost…… 如果都安装成功的话，可以在任务管理器里面找到以下3个进程：QTAgent.exe, QTAgentService.exe和QTController.exe 至此， Test Load Agent算是安装成功了，现在进入配置环节。 打开VSTS，配置Test Controller，如图： 进入配置菜单以后，需要配置： 控制器的名字：这里应该是计算机的名字，例如magusvm2003se Load Test Result Store：由于安装控制器的时候顺带安装了SQLEXPRESS，所以就用这个数据库 Agent：添加一个Agent，由于Agent也安装在一台机子上，所以就选择本机就好了。注意！状态需要为Ready才是正确的配置。 至此，Load Agent算是配置完毕了，但是还不能使用，因为当前的测试还没有配置为使用Load Agent来产生负载。 每一个测试项目，都有一个测试配置文件，现在我们就来修改这个测试配置文件吧，如图： 进入配置的窗口以后如图：需要把控制器选择为Remote，虽然其实是本地，但是从模式上来说就是Remote的。也因为只有选择Remote以后，才能选择controller，填入controller名字，这个名字是计算机的名字！！！ 到了这一步，就算是配置完成了，攻击吧，8个核心的压力机！ 最后希望大家能多讨论VSTS自带的性能测试工具，其实VSTS的LOAD TEST也是很强大的，还有推荐一篇关于如何安装Load Test Agent的文章 [...]


Related posts:<ol><li><a href='http://magustest.com/blog/softwaretesting/vsts2010-test-edition-article-collection/' rel='bookmark' title='Permanent Link: VSTS 2010 Test Edition文章收集'>VSTS 2010 Test Edition文章收集</a></li>
<li><a href='http://magustest.com/blog/automationtesting/data-driven-codedui-test/' rel='bookmark' title='Permanent Link: 实现数据驱动的CodedUI Test'>实现数据驱动的CodedUI Test</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>最近在用VSTS做性能测试的时候发现本地发起请求只能占用1个CPU，其余的CPU都是空闲的，上网查了一下，这个是因为用VSTS做性能测试的时候，发起压力的进程是VSTESTHost.exe，如果想让多核CPU的每一个CPU都产生压力，需要安装使用Visual Studio Team System Test Load Agent。这个工具是要钱的，即使你订阅了MSDN的什么版本，在下载中心里面下载到的都是90天试用版，可能也是因为这个原因，网上很少资料介绍如何安装和使用这个Load Agent。经过1个下午的摸索，成功配置成功，以下是在Windows Server 2003下安装Visual Studio Team System Test Load Agent的过程，VSTS，Controller和Agent都安装在同一台电脑上。<br />
<span id="more-251"></span><br />
首先安装VSTS2008。</p>
<p>然后去微软的网站<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=572E1E71-AE6B-4F92-960D-544CABE62162&amp;displaylang=en" target="_blank">下载Visual Studio Team System Test Load Agent试用版</a>。是一个ISO文件，用虚拟光驱挂上，然后开始安装。</p>
<p>如果要把Controller和Agent都安装在同一台电脑上，需要先安装Controller。安装的时候需要输入Windows的帐户和密码。整个过程不会太长，期间会默认安装SQL 2005 EXPRESS版，因为controller需要把测试的结果记录在数据库中。</p>
<p><a href="http://magustest.com/blog/wp-content/uploads/2008/12/install-controller1.png"><img class="alignnone size-full wp-image-253" title="install-controller" src="http://magustest.com/blog/wp-content/uploads/2008/12/install-controller1.png" alt="" width="500" height="443" /></a></p>
<p>安装好了controller以后，就可以安装Load Agent了，如图，也是需要输入windows的帐户和密码：</p>
<p><a href="http://magustest.com/blog/wp-content/uploads/2008/12/install-agent1.png"><img class="alignnone size-full wp-image-254" title="install-agent" src="http://magustest.com/blog/wp-content/uploads/2008/12/install-agent1.png" alt="" width="500" height="451" /></a></p>
<p>安装Agent会比安装controller多一个步骤，就是要指定controller，这里需要输入的controller的计算机名字，而不是什么LocalHost……</p>
<p><a href="http://magustest.com/blog/wp-content/uploads/2008/12/install-agent-fill-in-controller-name1.png"><img class="alignnone size-full wp-image-255" title="install-agent-fill-in-controller-name" src="http://magustest.com/blog/wp-content/uploads/2008/12/install-agent-fill-in-controller-name1.png" alt="" width="500" height="448" /></a></p>
<p>如果都安装成功的话，可以在任务管理器里面找到以下3个进程：QTAgent.exe, QTAgentService.exe和QTController.exe</p>
<p><a href="http://magustest.com/blog/wp-content/uploads/2008/12/process1.png"><img class="alignnone size-full wp-image-256" title="process" src="http://magustest.com/blog/wp-content/uploads/2008/12/process1.png" alt="" width="443" height="536" /></a></p>
<p>至此， Test Load Agent算是安装成功了，现在进入配置环节。</p>
<p>打开VSTS，配置Test Controller，如图：</p>
<p><a href="http://magustest.com/blog/wp-content/uploads/2008/12/admin-controller1.png"><img class="alignnone size-full wp-image-257" title="admin-controller" src="http://magustest.com/blog/wp-content/uploads/2008/12/admin-controller1.png" alt="" width="328" height="287" /></a></p>
<p>进入配置菜单以后，需要配置：</p>
<p>控制器的名字：这里应该是计算机的名字，例如magusvm2003se</p>
<p>Load Test Result Store：由于安装控制器的时候顺带安装了SQLEXPRESS，所以就用这个数据库</p>
<p>Agent：添加一个Agent，由于Agent也安装在一台机子上，所以就选择本机就好了。注意！状态需要为Ready才是正确的配置。</p>
<p><a href="http://magustest.com/blog/wp-content/uploads/2008/12/controller11.png"><img class="alignnone size-full wp-image-261" title="controller1" src="http://magustest.com/blog/wp-content/uploads/2008/12/controller11.png" alt="" width="484" height="379" /></a></p>
<p>至此，Load Agent算是配置完毕了，但是还不能使用，因为当前的测试还没有配置为使用Load Agent来产生负载。</p>
<p>每一个测试项目，都有一个测试配置文件，现在我们就来修改这个测试配置文件吧，如图：</p>
<p><a href="http://magustest.com/blog/wp-content/uploads/2008/12/edit-config1.png"><img class="alignnone size-full wp-image-259" title="edit-config" src="http://magustest.com/blog/wp-content/uploads/2008/12/edit-config1.png" alt="" width="500" height="280" /></a></p>
<p>进入配置的窗口以后如图：需要把控制器选择为Remote，虽然其实是本地，但是从模式上来说就是Remote的。也因为只有选择Remote以后，才能选择controller，填入controller名字，这个名字是计算机的名字！！！</p>
<p><a href="http://magustest.com/blog/wp-content/uploads/2008/12/choose-controller11.png"><img class="alignnone size-full wp-image-263" title="choose-controller1" src="http://magustest.com/blog/wp-content/uploads/2008/12/choose-controller11.png" alt="" width="500" height="355" /></a></p>
<p>到了这一步，就算是配置完成了，攻击吧，8个核心的压力机！</p>
<p><a href="http://magustest.com/blog/wp-content/uploads/2008/12/cpu1.png"><img class="alignnone size-full wp-image-262" title="cpu" src="http://magustest.com/blog/wp-content/uploads/2008/12/cpu1.png" alt="" width="448" height="442" /></a></p>
<p>最后希望大家能多讨论VSTS自带的性能测试工具，其实VSTS的LOAD TEST也是很强大的，还有推荐一篇关于如何安装Load Test Agent的文章</p>
<p><a href="http://blogs.msdn.com/edglas/pages/load-agent-and-load-controller-installation-and-configuration-guide.aspx" target="_blank">http://blogs.msdn.com/edglas/pages/load-agent-and-load-controller-installation-and-configuration-guide.aspx</a></p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://magustest.com/blog/feed/" title="RSS"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a>
	<img src="http://magustest.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<img src="http://magustest.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<img src="http://magustest.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fmagustest.com%2Fblog%2Floadtest%2Fvsts-load-controller-and-load-agent-installation%2F&amp;t=%E5%9B%BE%E8%A7%A3%E5%BE%AE%E8%BD%AF%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7VSTS2008%20Load%20Test%20Agent%E5%AE%89%E8%A3%85" title="Facebook"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.douban.com/recommend/?url=http%3A%2F%2Fmagustest.com%2Fblog%2Floadtest%2Fvsts-load-controller-and-load-agent-installation%2F&title=%E5%9B%BE%E8%A7%A3%E5%BE%AE%E8%BD%AF%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7VSTS2008%20Load%20Test%20Agent%E5%AE%89%E8%A3%85" title="豆瓣"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/douban.png" title="豆瓣" alt="豆瓣" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.douban.com/recommend/?url=http%3A%2F%2Fmagustest.com%2Fblog%2Floadtest%2Fvsts-load-controller-and-load-agent-installation%2F&title=%E5%9B%BE%E8%A7%A3%E5%BE%AE%E8%BD%AF%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7VSTS2008%20Load%20Test%20Agent%E5%AE%89%E8%A3%85&n=1" title="豆瓣九点"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/douban9.png" title="豆瓣九点" alt="豆瓣九点" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=%E5%9B%BE%E8%A7%A3%E5%BE%AE%E8%BD%AF%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7VSTS2008%20Load%20Test%20Agent%E5%AE%89%E8%A3%85&amp;link=http%3A%2F%2Fmagustest.com%2Fblog%2Floadtest%2Fvsts-load-controller-and-load-agent-installation%2F" title="FriendFeed"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<img src="http://magustest.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fmagustest.com%2Fblog%2Floadtest%2Fvsts-load-controller-and-load-agent-installation%2F&amp;title=%E5%9B%BE%E8%A7%A3%E5%BE%AE%E8%BD%AF%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7VSTS2008%20Load%20Test%20Agent%E5%AE%89%E8%A3%85" title="Live"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a>
	<img src="http://magustest.com/blog/wp-content/plugins/sociable/images/ping.png" title="Ping.fm" alt="Ping.fm" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://shuqian.qq.com/post?jumpback=1&title=%E5%9B%BE%E8%A7%A3%E5%BE%AE%E8%BD%AF%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7VSTS2008%20Load%20Test%20Agent%E5%AE%89%E8%A3%85&uri=http%3A%2F%2Fmagustest.com%2Fblog%2Floadtest%2Fvsts-load-controller-and-load-agent-installation%2F" title="QQ书签"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/qq.png" title="QQ书签" alt="QQ书签" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=%E5%9B%BE%E8%A7%A3%E5%BE%AE%E8%BD%AF%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7VSTS2008%20Load%20Test%20Agent%E5%AE%89%E8%A3%85%20-%20http%3A%2F%2Fmagustest.com%2Fblog%2Floadtest%2Fvsts-load-controller-and-load-agent-installation%2F" title="Twitter"><img src="http://magustest.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>

<p>Related posts:<ol><li><a href='http://magustest.com/blog/softwaretesting/vsts2010-test-edition-article-collection/' rel='bookmark' title='Permanent Link: VSTS 2010 Test Edition文章收集'>VSTS 2010 Test Edition文章收集</a></li>
<li><a href='http://magustest.com/blog/automationtesting/data-driven-codedui-test/' rel='bookmark' title='Permanent Link: 实现数据驱动的CodedUI Test'>实现数据驱动的CodedUI Test</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://magustest.com/blog/loadtest/vsts-load-controller-and-load-agent-installation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
