K6: constant-arrival-rate executor gets stuck in "started" state

Created on 23 Apr 2020  路  3Comments  路  Source: loadimpact/k6

Environment

  • k6 version: 0.27ish
  • OS: Linux

Expected Behavior


Test starts to run

Actual Behavior

k6 gets stuck in this state:
image

The CPU load is exactly 1, which makes me think that there's a busy-loop somewhere.
image

It wasn't possible to exit k6 with CTRL+C
I let the test run for 10 minutes, without any change.

Script to reproduce the behaviour:

NOTE: I was not able to reproduce this behaviour again.
This happened only once and the subsequent 30 test-runs did not get stuck.
I'm not sure if this is related to the executor or not.

Here's the relevant part of the script.

import http from "k6/http";
import { check, group, sleep } from "k6";


export let options = {

    execution: {
    constant_arr_rate: {
      type: "constant-arrival-rate",
      rate: 100,
      timeUnit: "1s",
      duration: "3m",
      preAllocatedVUs: 1,
      maxVUs: 1001,
      //startTime: "20s",
      gracefulStop: "5s",
    },
    },
};

export default function() {
 sleep(1);
}

bug evaluation needed high prio new-executors

Most helpful comment

@sniku if k6 ever ends in a situation you think it shouldn't again I would argue it is preferable if we know what went wrong. One of the things that can be done to help us would be to know what is the stack of all goroutines when this happens.

As mentioned in the signal package (last part of the last paragraph of that part) you can use SIGQUIT or ^\(Control+Backslash) to exit any golang program and print in stack(s).

All 3 comments

hmm this is very strange - after https://github.com/loadimpact/k6/pull/1390, you should always be able to abort k6 with a second Ctrl+C. It literally executes os.Exit(), so nothing should be able to prevent it, not even a busy loop. I'm thinking this issue might not be related to the executors at all, but rather to something in that PR or similar :confused:

@sniku if k6 ever ends in a situation you think it shouldn't again I would argue it is preferable if we know what went wrong. One of the things that can be done to help us would be to know what is the stack of all goroutines when this happens.

As mentioned in the signal package (last part of the last paragraph of that part) you can use SIGQUIT or ^\(Control+Backslash) to exit any golang program and print in stack(s).

Closed due to us unable to reproduce it and we've probably fixed it

Was this page helpful?
0 / 5 - 0 ratings

Related issues

athoune picture athoune  路  3Comments

Jonne picture Jonne  路  4Comments

na-- picture na--  路  4Comments

ppcano picture ppcano  路  3Comments

caalle picture caalle  路  4Comments