Re: Для HTTP/2 nginx не присылает UPDATE WINDOW

AterCattus nginx-forum на forum.nginx.org
Ср Май 11 14:32:41 UTC 2016


Валентин Бартенев Wrote:
-------------------------------------------------------
> On Wednesday 11 May 2016 10:06:58 AterCattus wrote:
> > Валентин Бартенев Wrote:
> > -------------------------------------------------------
> > > On Wednesday 11 May 2016 09:55:40 AterCattus wrote:
> > > > Да, конечно. За эти 2ГБ полезной нагрузки успевает выполнится
> пачка
> > > > последовательных запросов (т.е. nginx присылает все
> соответствующие
> > > HEADERS
> > > > и DATA фреймы). Не говоря уже про обмен SETTINGS.
> > > > 
> > > [..]
> > > 
> > > Так пришлось сделать из-за славного браузера Chrome, подробности:
> > > http://hg.nginx.org/nginx/rev/8df664ebe037
> > > 
> > > На самом деле не только Chrome этим грешит, но и MS IE/Edge,
> Safari.
> > > 
> > > У вас какой-то свой клиент?
> > > 
> > > --
> > > Валентин Бартенев
> > > _______________________________________________
> > > nginx-ru mailing list
> > > nginx-ru at nginx.org
> > > http://mailman.nginx.org/mailman/listinfo/nginx-ru
> > 
> > Да, я видел фикс для (RST_STREAM, NO_ERROR). Надеялся, что хоть по
> > превышению 2Г nginx отдаст еще 2Г в window_update, но нет.
> > Выходит, единственное решение - это по истечению окна
> переподключаться?
> > 
> > Клиент свой самописный, да.
> > 
> 
> Уточню, речь идет ведь об окне на stream?  Или на соединение?
> 
> Окно на соединение сейчас всегда поддерживается максимальным
> и window_update на него должны ходить по условию:
> 
>     if (h2c->recv_window < NGX_HTTP_V2_MAX_WINDOW / 4) {
> 
>         if (ngx_http_v2_send_window_update(h2c, 0,
> NGX_HTTP_V2_MAX_WINDOW
>                                                    - h2c->recv_window)
>             == NGX_ERROR)
>         {
>             return ngx_http_v2_connection_error(h2c,
>                                                
> NGX_HTTP_V2_INTERNAL_ERROR);
>         }
> 
>         h2c->recv_window = NGX_HTTP_V2_MAX_WINDOW;
>     }
> 
> --
> Валентин Бартенев
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

Речь про окно на соединение. Я не тестил на стримах в 2ГБ (только стримы на
несколько мегабайт с суммарным трафиком на соединение в 2-3ГБ), хотя сделаю
сейчас для полноты картины.

Проблема в том, что UPDATE_WINDOW вообще больше никакой не присылается после
первоначального обмена фреймами. Тест на 2ГБ занимает десятки секунд, flow
window соединения за это время уходит в минус, но nginx не присылает
обновления окна.

Posted at Nginx Forum: https://forum.nginx.org/read.php?21,266812,266824#msg-266824



Подробная информация о списке рассылки nginx-ru