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