grpc-node icon indicating copy to clipboard operation
grpc-node copied to clipboard

Allow configuring HTTP2 initial/local window size

Open alexandervain opened this issue 2 years ago • 1 comments

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?

alexandervain avatar Apr 16 '23 10:04 alexandervain

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.

murgatroid99 avatar Apr 18 '23 01:04 murgatroid99

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?

VampSlayer avatar Dec 05 '24 16:12 VampSlayer

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.

murgatroid99 avatar Dec 05 '24 17:12 murgatroid99

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.

rickihastings avatar Dec 06 '24 13:12 rickihastings

The functionality implemented in #2864 is now out in version 1.13.0.

murgatroid99 avatar Mar 11 '25 18:03 murgatroid99