首页 文章

如何让jmeter对线程中的所有HTTP请求使用相同的主机名/端口,但每个线程的值不同?

提问于
浏览
0

我正在测试集群应用程序,并希望定义一个不同的线程来测试集群中的每台机器 . 我有一个包含两个HTTP请求的线程组,一次登录,以及多次重复的POST . 我设置了一个CSV数据集配置来配置HTTP请求的服务器名称和端口号 . HTTP Cookie管理器保存登录请求产生的登录cookie .

问题是,每次运行HTTP请求时,都会再次读取CSV文件 . 通常,同一个线程会读取主机名和端口值,然后不会发送登录cookie,因为它只适用于线程登录的原始计算机 .

有没有办法让每个线程只读取一次CSV数据集配置?或者也许是其他一些方法来设置每个线程的主机名/端口,而不是像我现在这样做每个请求的基础?

2 回答

  • 0

    我相信CSV数据集配置的默认设置提供了您正在寻找的内容:

    CSV Distribution

    其他选项是使用If Controller分配线程,如:

    • 如果控制器,条件: (${__threadNum} % 2 == 0)

    • HTTP请求偶数线程

    • 如果控制器,条件: (${__threadNum} % 2 != 0)

    • HTTP请求奇数线程

    这两个选项都使用__threadNum()函数,它基本上返回当前线程的数量,也许你将能够测试你的方法或者想出一个更好的方法 .


    通常,通过单独命中不同的主机来测试群集应用程序并不是最好的主意 . 最终用户通常通过硬件软件Load Balancer访问此类应用程序,因此他可以看到单个主机名或IP地址 . 负载均衡器使用各种算法在服务器之间分配请求 .

    我认为这是您需要模拟的情况,最好将DNS Cache Manager添加到您的测试计划中,这样每个线程都可以自行解析主机名 .

  • 0

    你可以使用 HTTP request Defaults . 更新服务器IP,端口和协议详细信息 . 线程组中的所有HTTP请求都将从 HTTP request Defaults 获取默认的ip,端口等 .

    有关详细信息,请查看here

    enter image description here

相关问题