Hi ,
Please help if there is any way to set RPM for tests.
Hi ,
Please help if there is any way to set RPM for tests.
Hi, welcome to the forum
There are two ways you can set RPS (or RPM):
Using the arrival rate executors introduced in v0.27.0 you can define a constant or variable RPS per scenario, with the rate
and timeUnit
options.
See the documentation for the constant and ramping arrival rate executors, this arrival rate explanation and this article for more information.
Using the old --rps
option. This option is not as flexible as the arrival rate options, as it works globally and can only control the maximum RPS, so it cannot maintain a constant throughput. We recommend using arrival rate executors instead.
Thank you, I was looking for spike test with constant RPS, can you please help me with an example, actually I tried scenarios but scenarios are starting all at once
You can take a look at some of the examples on this page.
For a spike test with RPS you can use the ramping-arrival-rate
executor with a specific stages
configuration that holds a constant RPS for whatever time you need.
For example:
import http from 'k6/http';
export let options = {
scenarios: {
my_spike_test: {
executor: 'ramping-arrival-rate',
startRate: 10,
timeUnit: '1s', // start at 10 iterations per second
stages: [
{ target: 10, duration: '30s' }, // stay at 10 iters/s for 30s
{ target: 200, duration: '5s' }, // spike quickly to 200 iters/s
{ target: 200, duration: '3m30s' }, // hold at 200 iters/s for 3.5 minutes
{ target: 10, duration: '5s' }, // scale down quickly to 10 iters/s
{ target: 10, duration: '30s' }, // hold at 10 iters/s over the last 30 seconds
],
preAllocatedVUs: 50, // how large the initial pool of VUs would be
maxVUs: 100, // if the preAllocatedVUs are not enough, we can initialize more
exec: 'spiketest', // arbitrary exported function name to execute
}
}
}
export function spiketest() {
// Just make a request here. It's important to not introduce any sleep or
// additional processing here to ensure iters/s matches RPS.
http.get('https://test.k6.io/');
}
actually I tried scenarios but scenarios are starting all at once
You can use the startTime
option to delay certain scenarios, see the documentation.
For a simple spike test you likely only need one scenario anyway, but support for chaining scenarios dynamically is being considered in #1342.
Thank you imiric ,but iterations are not same as number of requests right, also to separate prereq requests for which metrics are not required, Iam separating them using thresholds. So does the metric value displayed above threshold entry is the total of prereq+main req or is it only for prereq.
If your iterations have only a single request, they are. Or if they have more, you can calculate them accordingly…
not sure what exactly you mean by prepreq, but consider using setup()
or a separate scenario for them?