Status code 0, error code 1000, stream error, INTERNAL_ERROR

Hi, we are using k6 for load testing out client’s application.
These are the options we are using:

export let options = {
stages: [
{ duration: “60s”, target: 200 },
{ duration: “600s”, target: 200 },
{ duration: “60s”, target: 200 },
],
thresholds: {
http_req_failed: [‘rate<0.01’],
},
ext: …
};

I start the test with k6 cloud myTest.js. Eventually calls respond with
1000 stream error: stream ID 81; INTERNAL_ERROR

If I decrease the target to 1 virtual user, all works out fine. So the test per se is ok.
From 2 virtual users on named problem occurs, of course more frequently with increasing virtual users.

I understand this is an internal go lang problem, but we definitely need to know the exact reason why the call fails, not just some vague INTERNAL_ERROR.

So could you please help us out here?

Best regards,
Erik

Hi @erik.heckert.kps, welcome to the forum!

This is what we get from your server.

INTERNAL_ERROR is defined in section 7 of the http2 RFC it is not some vague error it is literally during the normal operation the server told us it got an internal to it error and closed the connection as it couldn’t continue. This in general will probably happen in a moment where it can’t just return a status code 500 and possibly a message, so in the middle of a response not at the beginning of one.

So you will need to look at your server logs and see if it provides any help from there. Given what you are providing as information it likely runs out of some resource during the test and with fewer VUs it just … doesn’t push it as hard

Hope this helps and if you have any insight on what k6 can do better or help users debug such problems that I haven’t mentioned, please share