grafana/k6 · error
either startVUs or one of the stages' target values must be
Error message
either startVUs or one of the stages' target values must be greater than 0
What it means
Raised by RampingVUsConfig.Validate when both startVUs and every stage target are zero (or unset), meaning the scenario would run with no VUs at all and produce no useful load.
Source
Thrown at lib/executor/ramping_vus.go:92
}
// GetDescription returns a human-readable description of the executor options
func (vlvc RampingVUsConfig) GetDescription(et *lib.ExecutionTuple) string {
maxVUs := et.ScaleInt64(getStagesUnscaledMaxTarget(vlvc.StartVUs.Int64, vlvc.Stages))
return fmt.Sprintf("Up to %d looping VUs for %s over %d stages%s",
maxVUs, sumStagesDuration(vlvc.Stages), len(vlvc.Stages),
vlvc.getBaseInfo(fmt.Sprintf("gracefulRampDown: %s", vlvc.GetGracefulRampDown())))
}
// Validate makes sure all options are configured and valid
func (vlvc RampingVUsConfig) Validate() []error {
errors := vlvc.BaseConfig.Validate()
if vlvc.StartVUs.Int64 < 0 {
errors = append(errors, fmt.Errorf("the number of start VUs can't be negative"))
}
if getStagesUnscaledMaxTarget(vlvc.StartVUs.Int64, vlvc.Stages) <= 0 {
errors = append(errors, fmt.Errorf("either startVUs or one of the stages' target values must be greater than 0"))
}
errors = append(errors, validateStages(vlvc.Stages)...)
errors = append(errors, validateTargetShifts(vlvc.StartVUs.Int64, vlvc.Stages)...)
return errors
}
// getRawExecutionSteps calculates and returns as execution steps the number of
// actively running VUs the executor should have at every moment.
//
// It doesn't take into account graceful ramp-downs. It also doesn't deal with
// the end-of-executor drop to 0 VUs, whether graceful or not. These are
// handled by GetExecutionRequirements(), which internally uses this method and
// reserveVUsForGracefulRampDowns().
//
// The zeroEnd argument tells the method if we should artificially add a step
// with 0 VUs at offset sum(stages.duration), i.e. when the executor isView on GitHub (pinned to 01ffac6f24)
Solutions
- Set startVUs to at least 1
- Give one of the stages a target greater than 0
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at lib/executor/ramping_vus.go:92 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of grafana/k6@01ffac6f24 (2026-08-18).
Data as JSON: /api/errors/dae77730f34466af.
Report an issue: GitHub.