【问题标题】:JMeter DNS Cache manager not working when adding multiple IP adressess for one host为一台主机添加多个 IP 地址时,JMeter DNS 缓存管理器不起作用
【发布时间】:2019-12-25 11:39:18
【问题描述】:

我正在为 NLB 场构建 JMeter 测试计划。为了让 JMeter 测试用户访问 NLB 场中的所有服务器,我正在使用 DNS 缓存管理器(否则所有测试都将转到场的一台服务器)。我创建了多个具有相同 URL 的静态主机表条目,但每个条目都有一个唯一的 IP 地址(例如:bla.url.com -> 10.10.10.10 bla.url.com -> 10.10.10.11 等)

但所有测试会话都转到主机表中的第一个条目,而不是围绕多个条目“循环”。

我尝试了以下方法: - 使用系统主机文件而不是 DNS 缓存管理器 - 在 DNS 缓存管理器中启用清除缓存每次迭代 - 在 Java 安全属性中禁用 Java 缓存

【问题讨论】:

    标签: dns jmeter multiple-entries


    【解决方案1】:

    您误用了 DNS 缓存管理器,Static Host Table 功能基本上是 hosts file 的实现,您可以在其中将 IP 地址添加到主机名映射,以防万一您无法在操作系统级别执行此操作(即由于缺少管理员权限)。

    对于您的特定场景,只需将 DNS 缓存管理器添加到您的测试计划中即可启用每线程 DNS 解析,而不是依赖于底层 Java/操作系统实现。您应该指定一个入口点,例如 load balancer 的主机名,而不是在静态主机表下列出所有后端主机名。

    更多信息:The DNS Cache Manager: The Right Way To Test Load Balanced Apps

    【讨论】:

    • 感谢您的回复和更多信息链接!在我的情况下,问题在于 NLB 的配置方式是根据源 IP 地址完成平衡。换一种说法;创建测试负载的机器将始终路由到同一个 NLB 节点。我现在正在考虑是否(以及如何)可以创建具有多个值的变量(例如:具有值 server1、server2、server3、server4 的变量 URL),而不是让 JMeter 循环遍历这些值并将变量用作DNS 缓存管理器主机名...
    • 如果您需要修改您正在查看错误配置元素的源 IP 地址,您需要将所需的 IP 地址放入“源地址”输入中,该输入位于 @ 的“高级”选项卡下987654324@采样器:i.stack.imgur.com/huY4V.png。该技术被称为IP Spoofing。您还可以使用源自 CSV 数据集配置的 JMeter 变量。
    • 嗨,Dmitri,谢谢,但这并不是我想要的,因为我无法控制将哪个源 IP 路由到哪个 NLB 节点(这是由 IT 中的另一个部门完成的组织)。我真正需要的是一种为一个变量提供多个值的方法,因此每次 JMeter 查找该变量时,它都会返回其中一个值。我现在在 DNS 缓存管理器 (test.url.com) 中创建了 1 个条目,变量名称为主机名 (${var1})。这可行,最后一步是确保 {var1} 在每次迭代(数组或 CSV 等)上返回不同的值
    • Dmitri,感谢您为我指明了正确的方向!对我有用的最终解决方案: - 带有设置的 DNS 缓存管理器;每次迭代清除缓存,1 个主机条目,变量为主机名/IP 地址。包含 NLB 节点的 CSV 数据集配置。
    猜你喜欢
    • 2022-07-28
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多