【发布时间】:2012-11-07 06:05:32
【问题描述】:
我的工作流程涉及保存一些数据,然后在几秒钟后对其进行更新。我创建了一个带有如下参数的 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 文件中的每一行。
【问题讨论】:
-
为什么要使用一个线程发送安静的随机请求而不是两个线程依次发送请求?
-
因为我需要模拟一个工作流,用户保存一些数据,在他的页面上确认,然后发送成功状态。例如,想想购物车。用户首先创建一个购物车,在他的屏幕上确认购物车看起来正确,然后下订单。
-
有什么消息吗?我的回答有帮助吗?如果是你应该接受它,如果不是你可以评论
-
您好 PMD,我找到了另一个使用 JMeter 插件的解决方案,可在此处获得:code.google.com/p/jmeter-plugins。它提供了一个吞吐量整形定时器,它完全符合我的需要(限制每秒向服务器发出的请求数)。
标签: jmeter load-testing