负载测试疑难解答(来自MSDN)
负载测试疑难解答
更新:2007 年 11 月
本主题列出了在 Visual Studio Team System Test Edition 中使用负载测试时发生的下列常见问题。
运行测试时出错。(计算机 xyz)未能访问结果存储库: 对象名“LoadTestRun”无效
LoadTestCounterNotFoundException 错误
LoadTestResultsCollectorSlowException
此错误指示未创建负载测试数据库架构。可以使用查询分析器运行位于 <Visual Studio 安装文件夹>\Common7\IDE\ 中的 LoadTestResultsRepository.Sql 文件来创建数据库。
如果您使用的是 SQL Express,则可以在以前列出的目录中的命令提示符处运行“sqlcmd -S .\SQLEXPRESS -i loadtestresultsrepository.sql”。
警告: |
---|
参数区分大小写。必须键入大写的 S 和小写的 i。 |
有关更多信息,请参见 如何:使用 SQL 创建结果储存库。
在远程测试机组 (Rig) 上运行测试时,可能会收到以下消息:
没有与选择条件匹配的代理计算机
在远程测试机组 (Rig) 上运行测试时,可以为连接到控制器的代理计算机指定选择条件。例如,可以指定只有装有特定操作系统的代理才能用于运行测试。如果没有指定条件,则所有连接到控制器的代理都将用于运行测试。如果没有与选择条件匹配的代理,则不会运行测试。
若要解决没有与选择条件匹配的代理计算机这一问题,请按照下列步骤操作:
-
在“测试”菜单上指向“编辑测试运行配置”,再单击当前活动的配置。
说明: 若要查找当前活动的配置,请在“测试”菜单上指向“选择活动测试运行配置”。活动配置前面将有一个选中标记。
-
在列表框中单击“控制器和代理”。
-
在“名称和值”网格中,删除会将要用于运行测试的代理排除的条件。
-
完成后,单击“应用”,再单击“确定”。
运行负载测试时,可能会收到以下消息:
未能访问负载测试结果存储库
导致此错误的一个可能原因是使用 SQLCMD 命令行实用工具设置负载测试结果存储库时,为参数名指定了不正确的大小写。以下代码是在名为 ContosoServer1 的服务器上设置负载测试结果存储库的示例命令:
SQLCMD -S ContosoServer1 -U <user name> -P <password> -i loadtestresultsrepository.sql
警告: |
---|
参数区分大小写。必须键入大写的 S、U 和 P 以及小写的 i。 |
有关更多信息,请参见 如何:使用 SQL 创建结果储存库。
运行负载测试时出现的常见问题是无法生成期望的负载。下表列出了导致此问题的一些可能原因:
最大负载受到思考时间或虚拟用户数的限制。 |
如果打开了思考时间,则它会限制每个虚拟用户提交请求的速率。例如,每个请求的思考时间为 5 秒,则每个虚拟用户每秒最多的请求数为 0.2 个。可以按优先选择的顺序尝试下列更改之一:
|
||
将 Web 测试的代理属性设置为“default”。 |
将“default”用作 Web 测试中的代理设置很方便,因为它可以启用自动代理服务器检测。但是,将“default”用作代理设置会在负载测试中导致性能问题,并且会大大减少最大吞吐量。运行负载测试时,最好不要使用代理服务器。如果需要代理服务器,请指定代理服务器的名称来代替“default”。 |
||
应用程序瓶颈。 |
请记住,负载测试工具的作用便是找出应用程序中的瓶颈。如果页面因数据库或 CPU 瓶颈而导致响应时间过长,则它会限制每个虚拟用户每秒发出的请求数。请从少量的负载开始,并确保缓慢增加负载时能够保持合理的响应时间。可以使用“响应时间目标”属性为每个请求设置期望的最长响应时间。 |
||
Web 服务器的 CPU、内存或网络超过了其限制。 |
如果 Web 服务器的 CPU、内存或网络超过了其限制,则可能无法生成期望的负载。可能您已经找到了服务器的负载限制。可以增加 Web 服务器的 CPU、内存或网络。 |
||
生成负载的计算机的 CPU 内存或网络超过了其限制。 |
可能需要更多功能强大的计算机或更多代理计算机才能生成所需的负载。 |
||
数据库服务器(如果适用)的 CPU、内存或网络超过了其限制。 |
如果数据库服务器的 CPU、内存或网络超过了其限制,则可能无法生成期望的负载。可能您已经找到了数据库服务器的负载限制。可以增加数据库服务器的 CPU、内存或网络。 |