记录一次绕过负载均衡直接测试多个服务节点性能的工作

  在信创的大背景下,我的单位也在执行国产化替代了。我们采取的思路是逐层替代的方式,在网络层首先替换负载均衡设备,从 F5 替换成几个国产设备之中的一个。

  测试环境的 F5 设备版本太老了,替换后发现国产的设备性能要强很多。领导为了对比到底哪个国产的负载均衡设备更好,好在哪里,具体好多少,提出一个思路让我们测一下两种场景的性能,然后对其进行对比:

  1. 使用负载均衡设备下的系统性能
  2. 不使用负载均衡设备下的系统性能

  使用负载均衡的系统对外暴露的是一个 URL,测试起来很简单。不使用负载均衡的系统,对外服务节点有 8 个,暴露了 8 个 URL,该怎么设置 LoadRunner 的脚本呢?

  先明确一下目标:不使用负载均衡设备把流量均匀的分配到8个相同的服务节点上。我想到两种思路:

  1. 让分配到 8 个节点的请求数一致。测试工具发送请求的原理是发一个成功了或超时了再发第二个,但是每个节点的处理能力略有不同,如果强制向 8 个节点发送相同数量的请求,会导致有的节点处理不过来,有的节点已经处理完成了再等待新的请求,这样也不算均衡。
  2. 让 8 个节点的连接数一致。同一时刻有相同数量的用户连接到每个节点上,意味着同一时刻每个节点处理的任务数是相同,这样从连接数上看是均衡的。

  我们决定使用第二种思路解决这个问题,具体是按下面的步骤操作的 :

  1. 把 8 个访问地址里的 IP做成参数。 URL 由前面的服务器地址 http://192.18.*.*和后面的服务地址/service/get/**组成, 8 台服务器有 8 个不同的 IP地址。首先把 IP做成 LoadRunner 里的参数。
  2. 配置参数文件。要实现多个用户均匀访问 8 个地址的方式,比如共200 个用户,可以配置每 25 个用户对应一个访问地址。所以我们可以在 IP地址参数文件里这样配置,IP1,IP2,IP3......IP25,IP1......IP25......,这样重复 8 次,正好 200 个参数。
  3. 配置参数值的更新方式。在 LoadRunner 中配置参数时可以选择两个选项select next rowupdate value on,对应这两个选项我们分别选择uniqueonce,就是在启动 vuser 时给每个 vuser 分配一个值,每个值都取一个参数列表里的新值,后面的循环中不再更新这个值。

  这样在启动 vuser 时,200 个用户中的每一个都从参数列表中取一个 IP,然后固定使用这个 IP直到脚本执行结束。由于 IP是平均分配的,就达到了均匀分配流量的目的。

  最终我们成功拿到了不使用负载均衡的性能和使用负载均衡的性能,对比出了差异,完成了任务。

相关推荐
Kina_C3 小时前
LVS负载均衡的十二种核心调度算法
linux·运维·算法·负载均衡·lvs
蒸鱼Yuzheng5 小时前
游戏性能测试完整回答:场景、设备、指标、基线与回归判定
软件测试·性能测试·帧率·游戏测试·qa面试
雨辰AI3 天前
全集实战:企业级大模型服务化部署全栈指南|FastAPI 封装 + Nginx 负载均衡 + 高可用架构 从单机到生产一步到位
人工智能·ai·负载均衡·fastapi·ai编程
Kina_C3 天前
LVS-NAT 负载均衡实验从环境搭建到规则持久化
linux·运维·服务器·负载均衡·lvs
Kina_C3 天前
LVS-DR 模式负载均衡实战从原理到部署与验证
linux·运维·服务器·负载均衡·lvs
极目云瞻4 天前
负载均衡ADC替换(三):A10 Thunder ADC 到深信服AD
运维·负载均衡·iphone
nVisual5 天前
数据中心机柜负载均衡与三相相位监控方案
运维·网络·负载均衡·数据中心布线·综合布线管理软件
CodexDave7 天前
MySQL事务隔离级别与MVCC机制解析
前端·数据库·mysql·nginx·性能优化·负载均衡
Thanks_ks7 天前
深入理解一致性 Hash 算法:从理论到虚拟节点的工程实践
负载均衡·缓存雪崩·go语言·一致性hash·分布式系统·数据倾斜·虚拟节点