Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

stream error: stream ID x: HTTP_1_1_REQUIRED #1815

Open
rsangin opened this issue Jan 25, 2021 · 2 comments
Open

stream error: stream ID x: HTTP_1_1_REQUIRED #1815

rsangin opened this issue Jan 25, 2021 · 2 comments
Labels
bug evaluation needed proposal needs to be validated or tested before fully implementing it in k6

Comments

@rsangin
Copy link

rsangin commented Jan 25, 2021

Hi,
I'm using K6 to run some load tests on our server, but every request return error:
stream error: stream ID x: HTTP_1_1_REQUIRED

Our server is IIS and our test options are:
export let options = { maxRedirects: 0, vus: 1, insecureSkipTLSVerify: true, duration: '2m' };

When protocol of our website is HTTP, everything works fine but with HTTPS this error will happen.
Could anyone help us with this error?
Thank you in advance for your help.

@mstoykov
Copy link
Contributor

Hi @rsangin,

This looks like the server told k6 that it should be using HTTP1.1 after they negotiated HTTP2. So using http:// instead of https:// just never gets to negotiating HTTP2 as it's only done if the connection is secured, which is why it works.

Looking at this issue from another project and other threads on the internet, this seems like a combination of ISS and NTLM or ISS and client certificates the later of which we have even worse support than the former, so I suspect you use NTLM?

Unfortunately, the solutions for this are:

  1. k6 redoing the request with http1.1 automatically, which while probably okayish for some other application seems bad for a load testing tool.
  2. k6 being told somehow (hopefully per request) that it should not use http2 at all which is Any way to force to use HTTP/1.1 protocol #936, which unfortunately also hasn't been picked up, and if I remember correctly wasn't decided how exactly will be done, and will probably need to wait for the new HTTP API.
  3. Maybe a special case for NTLM(in case that is your problem), again I don't remember what the actually required changes are, so that might be a lot harder than "just an if somewhere".

Alternatively, you can configure ISS to just not do HTTP2 if then it can't be used. I don't know if you can only do it for the cases where you can't use it, so yeah - you need to check that yourself.

Also if you are not going to be using HTTP2 because your application doesn't support it, https vs http will likely be very similar unless the crypto required for the securing is the majority of your time, so you can just as well just change the protocol to http for the calls that require HTTP 1.1 and get pretty similar to the https numbers.

@mstoykov mstoykov added bug evaluation needed proposal needs to be validated or tested before fully implementing it in k6 labels Jan 25, 2021
@sameertejani
Copy link

We'd run into a similar issue and found that by turning off the accept client certificate in the SSL settings of IIS (or SSLNegotiateCert - https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/access) fixed it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug evaluation needed proposal needs to be validated or tested before fully implementing it in k6
Projects
None yet
Development

No branches or pull requests

3 participants