testing - 在 JMeter 中测试负载平衡
问题描述
我在定义为 LoadBalancer 的 Kubernetes 环境中有一个原型服务,该服务指向 5 个 Pod 来执行负载平衡。该服务还有一个外部 IP,以便在集群外部进行联系。
如何构建 Jmeter 负载测试以检查负载平衡是否正确执行?我想我必须执行更多并行请求以使服务器过载,但我不知道如何准确地实现这一点。
注意:我的应用程序原型会休眠 1 秒,并在响应中返回负责该请求的 pod 名称,因此我知道 LoadBalancer 服务选择了哪个 pod。
解决方案
识别第一个瓶颈的过程称为压力测试,是的,您需要从 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简写的更多信息
推荐阅读
- c++ - A const & refers to a nonvolatile variable. The variable changes. Does the change invalidate the const &?
- ruby-on-rails - 仅在合适的条件下执行工作
- apache-spark - 将 RDD 转换为 Dataframe 后的错误:“java.lang.String 不是 int 架构的有效外部类型”
- node.js - Negating a backreference in regex
- git - Bare and non-bare repo at the server
- c# - 在 C# 中将 3 个混洗字节转换为两个 12 位整数
- json - 如何在数据服务中保存来自 httpclient 的数据以及如何循环通过我的 json 对象
- c# - 无需本地管理员即可运行 WCF 服务 TCP
- php - Create new array from two separate arrays by counting duplicates php
- javascript - Vue FilePond中的文件大小调整不起作用