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

Allow configuring HTTP2 initial/local window size #2429

Open
alexandervain opened this issue Apr 16, 2023 · 4 comments · May be fixed by #2864
Open

Allow configuring HTTP2 initial/local window size #2429

alexandervain opened this issue Apr 16, 2023 · 4 comments · May be fixed by #2864

Comments

@alexandervain
Copy link

alexandervain commented Apr 16, 2023

Is your feature request related to a problem? Please describe.

We are facing an issue when a Node app with gRPC client is getting responses slower than expected due to the fact server is awaiting for a WINDOW_UPDATE frame which is not being sent promptly by the client because the client is busy processing already received data.
This happens when the app is under a certain load, and is sending multiple concurrent calls to the server, while the responses are relatively big.

Describe the solution you'd like

Allowing to control the initial window size and the local session window size would help tuning the settings for such use case.
Those configurations are available in Node's HTTP2 implementation:

Additional context

The default window size in Node's HTTP2 is 64KB.
The total amount of data to be received (for all the requests) in our example is ~5MB (with 100KB-150KB per request).

Would you consider accepting a PR for that?

@murgatroid99
Copy link
Member

After discussing with my team, it seems that BDP-based dynamic flow control window adjustment is likely to be a more attractive option in general for supporting this kind of usage.

For future reference: any implementation of that feature will need to limit the number of pings sent without sending other frames, for GFE compatibility.

@VampSlayer
Copy link

Hi @murgatroid99. My team also have an app that where the total amount of data to be received is larger than default window size. Any update on this feature request?

@murgatroid99
Copy link
Member

The BDP-based flow control management I referenced has still not yet been implemented. As a result, I am more inclined to implement or accept an implementation of the originally requested feature. The Java gRPC implementation has a flowControlWindow option that sets a fixed flow control window, so it would be reasonable to add a similar option to the Node implementation.

@rickihastings
Copy link

Hey, I work on the same team as @VampSlayer and have created a PR to enable the initialWindowSize to be changed as this is currently causing some problems for us.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants