首页 > 解决方案 > 在 JMeter 中测试负载平衡

问题描述

我在定义为 LoadBalancer 的 Kubernetes 环境中有一个原型服务,该服务指向 5 个 Pod 来执行负载平衡。该服务还有一个外部 IP,以便在集群外部进行联系。
如何构建 Jmeter 负载测试以检查负载平衡是否正确执行?我想我必须执行更多并行请求以使服务器过载,但我不知道如何准确地实现这一点。

注意:我的应用程序原型会休眠 1 秒,并在响应中返回负责该请求的 pod 名称,因此我知道 LoadBalancer 服务选择了哪个 pod。

标签: testingkubernetesservicejmeterload-balancing

解决方案


识别第一个瓶颈的过程称为压力测试,是的,您需要从 1 个线程(虚拟用户)开始并增加负载,直到响应时间开始超过可接受的阈值或开始发生错误(无论先发生什么)

如果您需要检查负载平衡能力,即您的请求应返回相关的 pod ID - 您可以使用JSR223 PostProcessor从响应中提取 pod ID 并使用您从响应中获得的内容修改HTTP 请求采样器标签,代码将是就像是:

prev.setSampleLabel(prev.getSampleLabel() + ' - ' + prev.getResponseDataAsString())

演示:

在此处输入图像描述

在上面的示例prev中代表前面的SampleResult,请参阅 JavaDoc 了解所有可用的函数/属性和Top 8 JMeter Java Classes You Should Be Using with Groovy文章,以获取有关此和其他暴露给JSR223 测试元素的JMeter API简写的更多信息


推荐阅读