I went on a bit of an adventure trying to figure out if this is something that k6 is at fault with and - I dunno … I don’t have a windows machine and Golang (the language in which k6 is written) has windows support which was contributed and so AFAIK no of the main developers/contributers really uses it. But even so we have a lot of users using it on windows and even I have tried it in a VM - it works …
This particular error has been discussed some amount of times because they would have test under windows failing for no reason. And given this blog post the specific thing in some of the cases where their tests fail is really just a reality of how TCP works and how they use it, or so it seems - this looks really hairy.
So I did try to reproduce something similar under Linux, as it shouldn’t really matter, but unfortunately(or not), I haven’t been able (although I got some cool numbers testing out).
In my particular example between two different systems I do manage to saturate my 1gbps network connection between them with 0 errors, if I increase http2_max_requests to something above 1000, as otherwise I hit it pretty easy. If I move my nginx on the same machine I do get 10gbps+ of traffic with thousands 10-37k RPS, depending on the file size being served.
But in all of the above cases you should be seeing some … very small percentage of errors. Like the thing that I tried to reproduce is somekind of racy behaviour and the limit on http2 request over a given connection is generally pretty big.
From everything I have found so far if you are seing more then 1 error in thousand requests you are dealing with some firewall/ network misconfiguration that either blocks or limits the amount of connections/traffic between the load generator and the system under test.
There were a couple of reports of antivirus programs getting in the way as well, but what exactly happens in your case - I have no clue.
I guess you can use wireshark to try and debug the connections? Although I don’t know what you really want to be looking for … maybe sending data after a close frame on an http2 connection?