HTTP2 window update and priority
Valentin V. Bartenev
vbart at nginx.com
Tue May 10 14:33:41 UTC 2016
On Tuesday 10 May 2016 22:12:59 Muhui Jiang wrote:
> Hi
>
> >You've misread the source code. HTTP/2 windows are handled in
> >ngx_http_v2_send_chain(), which is only called for response body
> >data.
>
> when the window is blocked, Nginx logs that the headers frame has been sent
> out, however I cannot receive any response headers. The same client tried
> on h2o and I can receive the response headers.
>
In addition, nginx uses SSL buffer to optimize record sizes.
You can tune it using the "ssl_buffer_size" directive:
http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_buffer_size
> >The prioritization has effect when there is concurrency for
> >connection. In your case from nginx point of view there was
> >only one stream in processing at any moment. The previous
> >stream was completed before the new one has been received.
>
> Let me explain my strategy in detail. I used some requests(stream id 1-15)
> to consume the window (65535) And then block the window without sending any
> window update frame(I have sent a very large stream update before). Then I
> send the next 6 streams with different priorities. At this moment, the 6
> streams should be blocked. Nginx should have enough time to handle the
> priority. Then I send a very large window update frame, but nginx will
> process the stream one by one with no priority observation. What I want to
> say is, only when the file is really large then the priority can be
> observed. But I have give enough time to Nginx by block the request. Nginx
> should handle the priority though the file is really small. If you need
> more information, please tell me. Many Thanks
>
[..]
Ok, now I understand your case. You are right, currently in this
particular case priorities aren't handled.
wbr, Valentin V. Bartenev
More information about the nginx
mailing list