1

我有一个工作流程,其中涉及保存一些数据,然后在几秒钟后更新它。我创建了一个带有如下参数的 CSV 文件:

ID,Success
1,true
2,false
3,true
4,false
5,true

等等等等。第一个 HTTP 请求是保存一个新 ID:

POST http://server/save
{ id: 1 }

第二个 HTTP 请求使用以下状态更新 ID:

POST http://server/update/
{ id: 1, success: true }

我创建了一个 JMeter 测试来对这个工作流程进行基准测试。我通过以下步骤创建了一个线程组:

1. Do save request
2. Wait a random period between 5 and 30 seconds
3. Do update request

我已将线程组设置为一次使用 2 个线程作为初始测试。但是,我注意到发生的事情实际上是这样的:

Thread 1
----------------------------------------------------
| 1. Do save request                               |
| 2. Wait a random period between 5 and 30 seconds |
| 3. Do an update request                          |
|--------------------------------------------------|

Thread 2
----------------------------------------------------
| 1. Do save request                               |
| 2. Wait a random period between 5 and 30 seconds |
| 3. Do an update request                          |
|--------------------------------------------------|

问题是,我真正想做的是确保始终有 2个同时向服务器发出的 HTTP 请求。在这种情况下,它产生 2 个线程并作为一个线程运行整个工作流,这意味着我无法保证服务器上的特定负载。我希望它做的是:

Thread 1
-------------------------------------------------------
|                                                     |
|  HTTP request                                       |
|  **********************************************     |
|  * 1. Do save request                         *     |
|  **********************************************     |
|                                                     |
|    2. Wait a random period between 5 and 30 seconds |
|                                                     |
|  HTTP request                                       |
|  **********************************************     |
|  * 3. Do update request                       *     |
|  **********************************************     |
|                                                     |
|-----------------------------------------------------|

有没有一种方法可以编写我的 JMeter 测试,以确保服务器上始终有 2 个同时发生的 HTTP 请求?此外,更新请求必须在保存请求之后发生,否则 ID 将不存在。

这是我的 JMeter 测试的图像:

while控制器只处理 CSV 文件中的每一行。

4

2 回答 2

1

我很抱歉地说我不明白你的问题。您到底想实现什么,特别是在您上一个工作流程描述中。

无论如何,如果您注意到您没有同时请求 2 个线程,因为您的暂停时间很长且只有 2 个线程,所以这些请求可以完全正常。

尝试使用 100 个线程,您会看到同时有请求。

关于您的测试计划的一些说明:

  • 您不需要 while 控制器迭代 CSV,只需将线程组中的迭代设置为无限

  • 加载测试时删除查看树结果和响应时间图

于 2012-11-07T07:36:08.453 回答
0

降低线程组中线程的“加速”周期(给它 0 秒)。这意味着它们将同时启动。

于 2012-11-07T07:50:49.823 回答