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

x/net/http2: WINDOW_UPDATE sent rate too high and can't be configured #28732

Open
crowfrog opened this issue Nov 12, 2018 · 6 comments

Comments

@crowfrog
Copy link

@crowfrog crowfrog commented Nov 12, 2018

What version of Go are you using (go version)?

golang:1.10.0 linux

Does this issue reproduce with the latest release?

Yes

What operating system and processor architecture are you using (go env)?

container: rhel
kubenet:

What did you do?

Currently golang http2 stack will send WINDOW_UPDATE back when receive a request with data.
It means a client will recevie a response and WINDOW_UPDATE when it send a request with data to golang http2 server.
sent one 'request' package and got two 'reponse' package, that will impact client performance in a high load traffic.
In fact, golang stack use 2^31 as default window size for connection. It is very big and updated too frequently is unnecessary.

What did you expect to see?

Change this behavior or make it configurable like other language http2 stack.
I think c++/java popular http2 stack have a configurable rate (default is 50%) used for sending WINDOS_UPDATE frame when the rate of left size/total is less than it.

What did you see instead?

@agnivade agnivade added this to the Unplanned milestone Nov 12, 2018
@agnivade

This comment has been minimized.

Copy link
Contributor

@agnivade agnivade commented Nov 12, 2018

@crowfrog crowfrog changed the title x/net/http2: WINDOW_UPDATE sent rate to high and can't be configured x/net/http2: WINDOW_UPDATE sent rate too high and can't be configured Nov 13, 2018
@fraenkel

This comment has been minimized.

Copy link
Contributor

@fraenkel fraenkel commented Nov 13, 2018

Most of the frameworks have chosen 50% as the deciding factor to send a WINDOW_UPDATE when reading DATA. nginx does it at the 25% mark.
I only saw one framework that allows you to tweak the value but there could be others, however I don't think it is needed.

I will go experiment and see how much benefit some change like this truly offers.

@bradfitz

This comment has been minimized.

Copy link
Member

@bradfitz bradfitz commented Nov 13, 2018

Definitely room for improvement here. (There might even be a TODO about this in the code, IIRC) But let's not add configurability here.

@crowfrog

This comment has been minimized.

Copy link
Author

@crowfrog crowfrog commented Nov 14, 2018

hi @fraenkel & @bradfitz,

Thanks a lot for your quick response! I am ok for non-configurable.

@gopherbot

This comment has been minimized.

Copy link

@gopherbot gopherbot commented Nov 19, 2018

Change https://golang.org/cl/150197 mentions this issue: http2: Send WindwUpdates when remaining bytes are below a threshold

@louygan

This comment has been minimized.

Copy link

@louygan louygan commented Dec 17, 2018

I could not find the change in the master.
when will this change merged to master?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
6 participants
You can’t perform that action at this time.