Menu

Important: This documentation is about an older version. It's relevant only to the release noted, many of the features and functions have been updated or replaced. Please view the current version.

Open source

Constant VUs

With the constant-vus executor, a fixed number of VUs execute as many iterations as possible for a specified amount of time.

For a shortcut to this executor, use the VUs and duration options.

Options

Besides the common configuration options, this executor has the following options:

OptionTypeDescriptionDefault
duration(required)stringTotal scenario duration (excluding gracefulStop).-
vusintegerNumber of VUs to run concurrently.1

When to use

Use this executor if you need a specific number of VUs to run for a certain amount of time.

Example

This examples schedules 10 VUs to run constantly for a duration 30 seconds.

JavaScript
import http from 'k6/http';
import { sleep } from 'k6';

export const options = {
  discardResponseBodies: true,
  scenarios: {
    contacts: {
      executor: 'constant-vus',
      vus: 10,
      duration: '30s',
    },
  },
};

export default function () {
  http.get('https://test.k6.io/contacts.php');
  // Injecting sleep
  // Total iteration time is sleep + time to finish request.
  sleep(0.5);
}

Observations

The following graph depicts the performance of the example script:

Constant VUs

Based upon our test scenario inputs and results:

  • The number of VUs is fixed at 10, and are initialized before the test begins;
  • Overall test duration is fixed at the configured 30 second duration;
  • Each iteration of the default function is expected to be roughly 515ms, or ~2/s;
  • Maximum throughput (highest efficiency) is therefore expected to be ~20 iters/s, 2 iters/s * 10 VUs;
  • We see that the maximum throughput is reached and maintained for the majority of the test;
  • Approximately 600 iterations are therefore performed in total, 30 seconds * 20 iters/s.