负载生成器过载会影响事务的响应时间吗?

Overloading Load Generators will impact response times of transactions?

我知道负载生成器的过载会影响执行时间和数量(No.of 交易每小时)但我不确定它是否也会影响响应时间,我的假设是它不会影响响应时间,如果我错了请告诉我这将如何影响响​​应时间?

它会影响您的响应时间以及您使用的任何工具,一些示例:

  • cpu 重载会使工具处理响应变慢,至少会影响完整加载时间
  • 网络过载会影响响应时间,因为会发生争用
  • 垃圾收集也会影响它 ...

根据经验,永远不要让喷油器过载。

比较过载和未过载的负载生成器时,第一个负载生成器将记录响应时间缩短,因为它会在发出请求时注入处理延迟,从而降低命中率。换句话说,过载的 Load Generator 会错误地报告更高的性能。仅当您的应用程序在这两个测试中都没有发生性能错误导致失败的事务完成得更快时,这才是正确的。

负载生成器过载会影响响应时间。负载生成器负责发送请求、接收响应和处理响应(验证等)。发送、接收和处理都可能受到过饱和负载生成器的影响,从而导致吞吐量降低,尽管主要是处理问题。

如果工具在注册已收到响应时出现延迟,这可能会影响报告的响应时间并报告比实际响应时间慢的响应时间。当请求尝试下载其他资源(CSS、JS、图像)时,情况会变得更糟,因为这会使问题成倍增加。

你的假设不正确。过载的负载生成器会影响响应时间,因为主机上所有内容的执行速度都会变慢,包括虚拟用户。即使为您的虚拟用户调高日志级别也会减慢您的响应时间,因为这会在 dozens/hundreds 将日志写入磁盘的竞争进程中引入磁盘约束和磁盘写入磁头仲裁 - 这就是为什么建议仅使用 "write on error" 作为被测日志级别。不成熟的测试工具用户往往会编写糟糕的测试代码,这会占用 CPU 和内存资源,这反过来会导致主机上的用户数量减少 运行 而不会影响用户的性能。

有许多经验法则可以帮助您确定与 Load Generator 影响相关的问题。第一个是在测试中使用控制因素。如果您还记得,控制因素是测试设计中的一个元素,它允许您独立于被测试的内容来衡量测试本身的完整性。在性能测试的情况下,您可以引入一个控制应用程序,它将 运行 在测试期间与虚拟用户并排运行,或者引入一个控制负载生成器。

使用控制应用程序,您只需在控制应用程序的每个负载生成器上包含少量用户。这些用户 运行 在测试期间。它们的响应应该是恒定的,不会因为控制应用程序的负载水平较低而降低。如果您在对照组中确实观察到了退化,响应时间增加,那么您就会对响应时间产生发电机感应影响。您有一个过载的负载生成器。

在第二种情况下,控制生成器,您拥有所有硬件匹配的负载生成器,并且您正在 运行在控制负载生成器(负载非常轻的控制生成器)上设置每种类型的单个虚拟用户。在测试期间,观察控制负载生成器的响应时间与类似类型的其余部分的响应时间。如果控制 Load Generator 组和全局组(其他 Load Generator)以相同的速率降级,那么您会遇到应用程序引发的性能问题,并且对您的结果充满信心。如果您观察到全局时间正在下降但控制组没有下降,那么您会遇到负载生成器过载导致本地虚拟用户性能下降的问题。

在任何一种情况下,除了您的控制器节点之外,建议您至少使用三个负载生成器。使用控制应用程序,您将看到至少三个负载均衡。使用控制负载生成器,您会看到两个用于主负载,一个用于控制负载。请记住,三个是负载生成器的最小数量。根据您的负载和技术堆栈,您可能会看到 100 个负载生成器,您需要将控制元素作为其中的一部分。

其他经验法则:对于负载生成器(CPU、磁盘、内存、网络)上的任何给定有限资源,永远不要超过可用资源池的 75%,否则您的 ring 0 资源命中将驱动您的虚拟用户性能较低,因为核心资源必须由操作系统提供服务。这导致假设您监控负载生成器就像监控被测应用程序一样。

尽量减少日志记录。注意虚拟用户进程的交换,因为所有工具制造商都将他们的测试工具虚拟用户标记为有资格进行交换。发生这种情况时,您会遇到磁盘命中和内存命中。独立于被测应用程序而降低用户速度的坏魔法。