我知道负载生成器的重载会影响执行时间和卷(每小时的事务数)但我不确定它是否会影响响应时间,我的假设是它不会影响响应时间如果我错了,请告诉我它将如何影响响应时间?
答案 0 :(得分:2)
无论您使用什么工具,它都会影响您的响应时间,例如:
所以经验法则,从来没有过载注射器。
答案 1 :(得分:2)
当比较过载和未过载的负载生成器时,第一个将注册缩短的响应时间,因为它会在发出请求时注入处理延迟,从而产生降低的命中率。换句话说,过载的负载生成器将错误地报告更高的性能。只有在两个测试中,您的应用程序不会导致性能错误,从而导致事务处理失败,并且更快完成,这将是真实的。
答案 2 :(得分:1)
响应时间将受到负载生成器过载的影响。负载生成器负责发送请求,接收响应和处理响应(验证等)。发送,接收和处理都可能受到过饱和负载生成器的影响,导致吞吐量降低,但主要是处理问题。
如果工具在注册已收到响应时延迟,则会影响报告的响应时间并报告响应时间比实际响应时间慢。当请求尝试下载其他资源(CSS,JS,图像)时,这会变得更糟,因为这会使问题成倍增加。
答案 3 :(得分:1)
您的假设不正确。负载生成器过载会影响响应时间,因为主机上所有内容的执行速度都会降低,包括虚拟用户。即使为虚拟用户调高日志级别也会减慢响应时间,因为这会引入磁盘限制并在数十个/数百个将日志写入磁盘的竞争进程中对磁盘写入头进行仲裁 - 这就是为什么建议仅使用“写错误“作为您测试的日志级别。不成熟的测试工具用户倾向于编写糟糕的测试代码,这会占用CPU和内存资源,从而导致可以在主机上运行的用户减少,而不会影响用户的性能。
有许多经验法则可以帮助您识别与负载生成器影响相关的问题。第一个是在测试中使用控制因子。如果您还记得,控制因素是测试设计中的一个元素,它允许您测量测试本身的完整性,而与测试的内容无关。在性能测试的情况下,您可以引入控制应用程序,该应用程序将在测试期间与虚拟用户并行运行,或者引入控制负载生成器。
使用控制应用程序,您只需要在控制应用程序的每个负载生成器上包含少数用户。这些用户在测试期间运行。由于控制应用程序的负载水平较低,它们的响应应该是一个常数,而不是降级。如果您确实观察到退化,提高响应时间,那么您在对照组中就会对响应时间产生影响。你有一个负载过重的负载。
在第二种情况下,控制生成器,您拥有所有硬件匹配的负载生成器,并且您在控制负载生成器上运行每种类型的单个虚拟用户,这是一个负载非常轻的控制生成器。在测试期间,观察控制负载生成器与类似类型的其余人口的响应时间。如果控制负载生成器组和全局组(其他负载生成器)以相同的速率降级,则会出现应用程序引发的性能问题,并且对结果具有高可信度。如果您发现全局时间正在降级但控制组不是那么您就会遇到重载负载生成器的问题,从而导致本地虚拟用户性能下降。
在任何一种情况下,除控制器节点外,建议至少使用三个负载生成器。使用控制应用程序,您将看到至少三个平衡负载。使用控制负载生成器,您将看到两个用于主负载,一个用于控制负载。请记住,三个是最小数量的负载生成器。根据您的负载和技术堆栈,您可以查看100个需要控制元件的负载生成器。
其他经验法则:对于负载生成器(CPU,DISK,MEMORY,NETWORK)上的任何给定有限资源,永远不要超过可用资源池的75%,否则您的环0资源命中率将使您的虚拟用户性能降低核心资源必须由操作系统提供服务。这导致您假设您在监视正在测试的应用程序时监视负载生成器。
最小化日志记录。请注意交换虚拟用户进程,因为所有工具制造商都已将其测试工具虚拟用户标记为有资格进行交换。发生这种情况时,您会获得磁盘命中和内存命中。对于使用户放慢速度而言,这与测试中的应用程序无关。