负载测试疑难解答

本主题列出了在 Visual Studio 旗舰版 中使用负载测试时发生的下列常见问题。

无法使用 SQL 跟踪

运行测试时出错。 (计算机 xyz)未能访问结果存储库: 对象名“LoadTestRun”无效

LoadTestCounterNotFoundException 错误

LoadTestResultsCollectorSlowException

LoadTestErrorLimitExceededException 错误

无法访问负载测试结果存储库

无法生成期望的负载

对多核计算机的负载生成限制

无法使用 SQL 跟踪

在启用 SQL 跟踪的情况下本地运行负载测试时,可能会收到以下消息:

运行测试时出错。 未能启动 SQL 跟踪: 您没有运行“SP_TRACE_CREATE”的权限

若要在运行 Windows Vista 操作系统的计算机上本地运行的负载测试中使用 SQL 跟踪,您必须是正在跟踪的 SQL Server 的实例上的 sysadmin 角色的一个成员。 若要解决此问题,SQL Server 管理员必须将您添加到 sysadmin 角色中。

运行测试时出错。(计算机 xyz)未能访问结果存储库: 对象名“LoadTestRun”无效

此错误指示未创建负载测试数据库架构。 可以使用查询分析器运行位于 <Visual Studio 安装文件夹>\Common7\IDE\ 中的 LoadTestResultsRepository.Sql 文件来创建数据库。

如果您使用的是 SQL Express,则可以 在命令提示符下,从前面列出的目录中运行“sqlcmd -S .\SQLEXPRESS -i loadtestresultsrepository.sql”。

警告

参数区分大小写。 必须键入大写的 S 和小写的 i。

有关更多信息,请参见 如何:使用 SQL 创建负载测试结果储存库

LoadTestCounterNotFoundException 错误

当包含在负载测试中的一个计数器集中的性能计数器在包含它的性能计数器类别中无法找到时,会发生此错误。 如果此计数器已添加到计数器集中,则性能计数器的名称可能拼写错误。 也可能是性能计数器在类别中不再存在,因为性能计数器在定义它的较新版本的软件组件中已被删除。 可以从计数器集中将其移除,这样可以更正此错误而不会丢失任何有用的数据。

LoadTestResultsCollectorSlowException 错误

此错误指示测试控制器无法以负载测试的指定采样速率收集所有计算机的性能计数器结果。 当负载测试的计数器集映射指定从多个不同的计算机收集多个性能计数器时,可能会发生此错误。 当测试代理与测试控制器在同一台计算机上运行时,也会发生此错误。 通过增加负载测试的采样速率可能能够更正此错误。

LoadTestLimitExceededException 错误

只要发生 1000 个或更多相同类型的错误,就会发生此错误。 此错误通常指示在负载测试下运行的测试存在问题。 例如,如果 Web 性能测试向找不到的 URL 发出请求,则应该更正此 Web 性能测试以修复此错误。

无法访问负载测试结果存储库

运行负载测试时,可能会收到以下消息:

未能访问负载测试结果存储库

导致此错误的一个可能原因是使用 SQLCMD 命令行实用工具设置负载测试结果存储库时,为参数名指定了不正确的大小写。 以下代码是在名为 ContosoServer1 的服务器上设置负载测试结果存储库的示例命令:

SQLCMD -S ContosoServer1 -U <user name> -P <password> -i loadtestresultsrepository.sql

警告

参数区分大小写。 必须键入大写的 S、U 和 P 以及小写的 i。

有关更多信息,请参见 如何:使用 SQL 创建负载测试结果储存库

无法生成期望的负载

运行负载测试时出现的常见问题是无法生成期望的负载。 下表列出了导致此问题的一些可能原因:

最大负载受到思考时间或虚拟用户数的限制。

如果打开了思考时间,则它会限制每个虚拟用户提交请求的速率。 例如,每个请求的思考时间为 5 秒,则每个虚拟用户每秒最多的请求数为 0.2 个。 可以按优先选择的顺序尝试下列更改之一:

  1. 增加虚拟用户数以生成更真实的负载。 增加虚拟用户数通常需要更多内存。

  2. 缩短思考时间。

  3. 关闭思考时间以生成最大的负载。

警告说明警告
关闭思考时间会对测试引擎产生很大的影响。如果关闭思考时间,请减少虚拟用户数。

将 Web 性能测试的代理属性设置为“default”。

将“default”用作 Web 性能测试中的代理设置很方便,因为它可以启用自动代理服务器检测。 但是,将“default”用作代理设置会在负载测试中导致性能问题,并且会大大减少最大吞吐量。 运行负载测试时,最好不要使用代理服务器。 如果需要代理服务器,请指定代理服务器的名称来代替“default”。

应用程序瓶颈。

请记住,负载测试工具的作用便是找出应用程序中的瓶颈。 如果页面因数据库或 CPU 瓶颈而导致响应时间过长,则它会限制每个虚拟用户每秒发出的请求数。 请从少量的负载开始,并确保缓慢增加负载时能够保持合理的响应时间。 可以使用“响应时间目标”属性为每个请求设置期望的最长响应时间。

Web 服务器的 CPU、内存或网络超过了其限制。

如果 Web 服务器的 CPU、内存或网络超过了其限制,则可能无法生成期望的负载。 可能您已经找到了服务器的负载限制。 可以增加 Web 服务器的 CPU、内存或网络。

生成负载的计算机的 CPU 内存或网络超过了其限制。

可能需要更多功能强大的计算机或更多测试代理计算机才能生成所需的负载。

数据库服务器(如果适用)的 CPU、内存或网络超过了其限制。

如果数据库服务器的 CPU、内存或网络超过了其限制,则可能无法生成期望的负载。 可能您已经找到了数据库服务器的负载限制。 可以增加数据库服务器的 CPU、内存或网络。

对多核计算机的负载生成限制

在多核计算机上运行负载测试时,负载生成有以下限制:

  • 如果该计算机运行的是 Visual Studio 旗舰版,则负载生成仅限于单核。

  • 如果该计算机运行的是 Visual Studio Test Agent,则负载生成不受限,在所有内核和处理器上运行。

请参见

任务

有关 Visual Studio ALM 测试工具的疑难解答

Web 性能测试疑难解答

如何:使用 SQL 创建负载测试结果储存库

概念

负载测试中测试控制器和测试代理的故障排除策略

负载测试的注意事项

管理负载测试结果储存库中的负载测试结果

使用错误表分析负载测试中的错误

使用负载测试分析器分析负载测试中的阈值规则冲突

其他资源

负载测试中的网络模拟疑难解答

负载测试和 Web 性能测试疑难解答

使用测试控制器和测试代理在多台测试计算机之间分发负载测试