Jmeter TCP Sampler - 如何重用线程之间的连接?

时间:2017-08-09 08:38:16

标签: tcp jmeter

我在JMeter中的ThreadGroup下设置了一个TCP采样器。从CSV文件中挑选数据。第一行数据用于身份验证,所有后续行都是实际参数数据。如下所示,

AAAAAAA21
BBBBBBBCCCCCCCDDDDDDD
BBBBBBBCCCCCCCDDDDDDD
BBBBBBBCCCCCCCDDDDDDD

我想要的是,如果线程组以10个线程连续运行,则第一个线程获取第一行数据,与服务器建立连接并进行身份验证。所有后续线程都使用相同的连接(而不是每次都创建一个新连接),只需将数据发送到服务器即可。这样做的原因是数据模拟了一个设备,该设备发送第一个数据包进行身份验证并创建连接,所有后续数据包在同一连接上发送数据。我想使用JMeter模拟设备测试。

我发现的限制是JMeter为每个线程创建一个新连接,并在线程退出时关闭连接。似乎没有办法在threadGroup中的所有线程之间共享连接,或者有一种我不知道的方式。

寻找可以测试此用例的方法

1 个答案:

答案 0 :(得分:1)

不幸的是,不可能在不同线程之间共享连接,因为每个线程代表一个单独的虚拟用户,因为虚拟用户对彼此一无所知。此外,如果您尝试在不同线程之间共享连接,则一次只能使用一个连接(否则您将遇到多个线程同时写入同一连接导致数据损坏的情况)

因此,您可以为每个虚拟用户使用1个连接(即,您将共有10个连接)

  1. Loop Controller添加到您的主题组并勾选Forever框或将循环计数设置为-1 - 这样儿童采样器将永远运行
  2. 将TCP Sampler添加为循环控制器的子项并勾选Re-use connection框,以便您的测试计划如下所示:

    JMeter TCP Reuse Connection

  3. 有关详细信息,请参阅How to Load Test TCP Protocol Services with JMeter文章。