Chrome seems to limit max concurrent streams to 256 even though server advertises a high number in h2 SETTINGS frame. When I execute the following snippet,
var ev = [];
for (i = 0; i < 300; i++) {
ev[i] = new EventSource("https://foo.example.com/" + i);
console.log(ev[i]);
}
I see that 256 requests go through the h2 connection and rest of the requests are stalled. Since the requests are long lived in this case (tomorrow websocket as h2 stream), the rest of the requests don't make any progress. The following events are observed in chrome://net-internals
t=26600 [st= 58] HTTP2_SESSION_RECV_SETTING
--> id = "3 (SETTINGS_MAX_CONCURRENT_STREAMS)"
--> value = 1000
t=26600 [st= 58] HTTP2_SESSION_UPDATE_STREAMS_SEND_WINDOW_SIZE
--> delta_window_size = -65535
t=26600 [st= 58] HTTP2_SESSION_RECV_SETTING
--> id = "4 (SETTINGS_INITIAL_WINDOW_SIZE)"
--> value = 0
t=26621 [st= 79] HTTP2_SESSION_STALLED_MAX_STREAMS
--> max_concurrent_streams = 256
--> num_active_streams = 0
--> num_created_streams = 256
--> num_pushed_streams = 0
--> url = "https://foo.example.com/441"
I see that safari, and firefox don't have that restriction. I think that limiting to 256 is arbitrary esp when server setting allows 1000 concurrent streams. Do you consider this as chrome's bug ? Is there a workaround ?
--
--
Chromium Discussion mailing list: chromium...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-discuss