QTAGENT.EXE使用所有可用的CPU

Tod*_*ang 5 unit-testing load-testing visual-studio-2010 microsoft-test-manager

我很擅长用VS加载测试,但我认为我已经正常设置了所有内容,并且我遇到了一个问题,即我的负载测试执行速度很快达到了100%的CPU利用率.这似乎可能会影响我的测试结果,我认为这不是预期的行为.

我的硬件平台是一个强大的开发人员机器:几个月大的四核,12GB RAM,2个IDE驱动器和一个快速NIC.如果有必要,我可以详细说明,但通常我会说它尖叫.

我正在使用VS2010 SP1,C#/ .NET 4测试一个在Win7 x64本地运行的MVC2/3应用程序,针对MSSQL 2008.

基础测试是一个单元测试,它运行单个MVC控制器方法,该方法使用Unity和其他Ent-Lib库根据用户的权限从数据库中提取客户端集合.单元测试的典型执行时间为0.4到0.6秒.

设置负载测试以暴露性能问题并运行10分钟:

  • 初始用户数:1
  • 步骤持续时间:30
  • 步骤用户数:1

观察:

  1. 作为单个用户的前30秒,执行有点不稳定.第一次测试需要3秒,这是正常的预热.接下来的15个左右需要大约.4秒,这是完美的.然而,在10秒之后,测试开始运行5秒.这是第二个虚拟用户开始之前.随着额外的虚拟用户的加入,测试时间逐渐增加,这是可以预期的,尽管运行时间似乎仍然很长.

  2. 更令人担忧的是,CPU利用率在用户6周围飙升(在所有8个核心之前平均约为20%).在用户6和7处,CPU达到70%并且由用户8在8个核上固定为100%,并且它保持在那里直到测试在10分钟后结束.毋庸置疑,对于正常的步进测试,我想从10个并发用户开始,然后达到100或更多,但我的CPU开始时为100%,结果肯定是不准确的.

正如我从执行任务中可以看到的那样,杯子显然是QTAGENT.EXE.它使用我所看到的每个备用CPU周期.我也在32位模式下运行此负载测试,QTAGENT32.EXE运行类似.

我不知道为什么我遇到这个问题,更不用说该怎么做了.任何提案或解决方案表示赞赏.TIA!

编辑

我发现我的问题的解决方法是通过单击"调试测试"而不是"运行测试"来启动负载测试.这对我来说没有任何意义,事实上它就像我期望的那样; 但是,我不能否认它一直在用100个用户运行我的测试,只是半打我的CPU(平均约50%的尖峰).

Nat*_*Nat 5

QTAgent是执行所有负载测试工作的代码.它遍历执行测试的每个虚拟用户.

测试代理CPU被绑定的一个原因是您的网站正在快速反击结果.模拟这种情况的一种好方法是加载测试静态html页面,或者请求IIS充分缓存的页面.

检查测试的每秒请求值.该值是衡量QTAgent需要完成多少工作的合理指标.

对于每个测试,您的QTAgent必须处理并发送html请求,记录收到的测试并存储结果以及所有性能监控统计信息.

我建议下一步在每个单元测试之间添加1秒的延迟,这样可以让你加载更多的虚拟用户.

也就是说,在CPU挂起之前,在同一台机器上托管的Web应用程序上运行负载测试无法处理很多虚拟用户.

你能发布每秒的请求统计数据吗?


Tod*_*ang 1

所以这归结为用户错误。事实证明我正在测试的控制器是资源密集型的。我读到这是其他地方 CPU 使用率高的最可能原因,但我假设(哎呀)8 个并发用户点击这个特定的控制器不可能固定我的 CPU。不,事实上,我们的代码运行起来非常昂贵,8 个用户同时请求该页面将会耗尽它。感谢所有的建议。