Add configurable HTTP/2 connection window size#663
Add configurable HTTP/2 connection window size#663arturobernalg wants to merge 1 commit intoapache:masterfrom
Conversation
|
@arturobernalg What is exactly the intent of this change-set? Why do you want this to be configurable? What is the exact use case for this? |
@ok2c |
|
@arturobernalg Please provide an integration test or a demo app showing that tinkering with this parameter produces any tangible results. |
545c210 to
b82a2ed
Compare
@ok2c Added a demo app that keeps the per-stream initial window fixed and varies only the connection-level receive window while transferring many large responses over a single H2 connection. |
|
@arturobernalg what kind of improvement are you seeing? |
|
@arturobernalg And more importantly, why would anyone in their sane mind use any value other than MAX? |
|
@ok2c A concrete use case is an H2 client in a gateway, proxy, or sidecar multiplexing many large upstream responses over a single connection. Such clients may still want a reasonably large per-stream window, while limiting aggregate inbound data in flight at the connection level. |
To my mind, the main use case is a gateway, proxy, sidecar, API aggregator, or backend-to-backend H2 client multiplexing many concurrent large upstream responses over a single connection. |
|
@arturobernalg My daughter was absolutely convinced she really needed a pony when she was 7. Is there a single user for this parameter? Anyone asked for it? Do you need it for your personal project? For any more or less serious use case this single parameter would likely not be enough. We would likely need a proper strategy interface here if actually anyone really asked for a feature like this. |
For the record. No one asked for AI either, and yet we got OpenAI. |
@arturobernalg Which is bloody shame |
@ok2c - Agree 100% |
This change adds a local HTTP/2 connection window size setting to H2Config.
The new setting controls connection-level flow control only. It does not affect stream
INITIAL_WINDOW_SIZEand preserves the current behavior by default.