我对使用 VS 进行负载测试还很陌生,但我认为我已经正常设置了所有内容,并且我遇到了一个问题,即我的负载测试的执行迅速达到 100% CPU 利用率。这似乎很可能会影响我的测试结果,我认为这不是预期的行为。
我的硬件平台是一个强大的开发机器:几个月前有一个四核、12GB RAM、2 个 IDE 驱动器和一个快速 NIC。如有必要,我可以详细说明,但通常我会说它尖叫。
我正在使用 VS2010 SP1、C#/.NET 4 针对 MSSQL 2008 测试在 Win7 x64 上本地运行的 MVC2/3 应用程序。
底层测试是一个单元测试,它执行一个单一的 MVC 控制器方法,它使用 Unity 和其他 Ent-Lib 库根据用户的权限从数据库中拉回一组客户端。单元测试的典型执行时间为 0.4 到 0.6 秒。
负载测试设置为暴露性能问题并运行 10 分钟:
- 初始用户数:1
- 步骤持续时间:30
- 步用户数:1
观察:
对于单个用户的前 30 秒,执行有点不稳定。第一次测试需要 3 秒,这是正常的热身。接下来的 15 秒左右大约需要 0.4 秒,这是完美的。然而,就在 10 秒后,测试开始运行 5 秒。这是在第二个虚拟用户出现之前。随着更多虚拟用户的加入,测试时间逐渐增加,这是意料之中的,尽管运行时间似乎仍然很长。
更令人担忧的是,用户 6 附近的 CPU 利用率会飙升(之前所有 8 个内核的平均利用率约为 20%)。在用户 6 和 7 处,CPU 达到 70%,并由用户 8 在 8 个内核上固定为 100%,并一直保持到 10 分钟后测试结束。不用说,对于一个正常的步进测试,我想从 10 个并发用户开始,然后增加到 100 个或更多,但我的 CPU 以 100% 开始,结果肯定不准确。
Cuprit 显然是 QTAGENT.EXE,正如我从执行任务中看到的那样。它使用我所看到的每个空闲 CPU 周期。我也在 32 位模式下运行了这个负载测试,并且 QTAGENT32.EXE 运行类似。
我不知道为什么会遇到这个问题,更不用说该怎么办了。任何建议或解决方案都值得赞赏。蒂亚!
编辑
我发现解决我的问题的方法是通过单击“调试测试”而不是“运行测试”来启动负载测试。这对我来说真的没有任何意义,事实上它就像我所期望的完全相反;但是,我不能否认它一直在与 100 多个用户一起运行我的测试,并且只对我的 CPU 进行半抖动(平均约为 50% 的峰值)。