Allow configuring HTTP2 initial/local window size
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:
-
initialWindowSize- could be provided as part of the settings passed to the http2.connect method underoptions.settings -
localWindowSize- could be set using http2session.setLocalWindowSize API
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?
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.
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?
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.
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.
The functionality implemented in #2864 is now out in version 1.13.0.