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