java - 如何为jmeter中的每个线程发送唯一数据

标签 java multithreading jmeter load-testing

我正在使用 jmeter 测试我的 REST API 是否有 10000 次命中,每个 http 命中都会在数据库中存储一些数据。我已经按照下面的测试计划

enter image description here

我正在并行运行 10 个线程,每个线程的加速时间为 20 秒,并循环 1000 次以实现相同的目的。

enter image description here

但这里的问题是我的线程没有采用唯一的数据集。而我的后端 HTTP URL 期望每个 http 命中都有唯一的字符串。

现在我尝试了以下方法。

  1. 具有 10000 个唯一值的单个 CSV 数据集配置,线程组中的所有线程都在读取相同的数据。

  2. 为每个线程设置不同的 CSV 数据集,并使用文件名 ${__threadNum}.csv 为线程分配 csv 文件

  3. 使用 jmeter _RandomString 方法在运行时为每个 http 命中生成随机字符串,在 http post 正文中我正在传递

{"tenantName":"${__RandomString(15,abcdefghijklmnofqrst1234567#@#%^&*,)}"}

  1. 使用 BeanShell 预处理器调用 java 方法并始终生成唯一模式赢得 HTTP 请求采样器。

现在,以上方法都不适合我。在某个时间点后运行测试计划时,2 个线程正在尝试使用相同的数据并访问我的 HTTP url。而且我从 http 响应中收到冲突错误。我的错误计数不断增加。

现在我真的不明白这 2 个步骤如何尝试使用相同的数据访问 http?

有人可以解释这个问题并帮助我设置正确的测试计划配置吗。

编辑:

所有线程的CSV数据集配置:

enter image description here

HTTP 请求:

enter image description here


使用 CSV 数据集添加测试计划:

enter image description here

最佳答案

虽然我问这个问题太晚了,但我认为有人可能会觉得它有用。

  1. 为线程组创建一个随机变量
  2. 为该变量分配最小值和最大值。请确保最小值和最大值之间的差异较大,以减少碰撞。
  3. 将每个线程(用户)标记为TRUE

希望对您有所帮助。

引用http://blog.developer.bazaarvoice.com/2016/05/19/quick-and-easy-web-service-load-testing-with-jmeter/

关于java - 如何为jmeter中的每个线程发送唯一数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32240287/

相关文章:

jmeter - 在 JMeter 2.11 中从 JMeter 2.7 打开 JMX 文件时出现转换错误

java - 如何在 Weblogic 10.3.x 上利用 EL 2.2 功能?

java - 如何在 Android 应用程序中通过网络对用户进行身份验证,而不在本地设备上复制数据?

java - 如何从SD卡打开pdf

java - JSF 和 f :ajax for hiding/showing div

regex - 如何从 JSON 响应中提取 2 个字符之间的所有内容?

multithreading - 为什么线程有时卡在waitfor中?

java - Jira:线程安全的小工具数据?

java - Thread.yield() 仍然是跨平台雷区?

javascript - 选择多个 JSON 时出现问题