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

Валентин Бартенев vbart на nginx.com
Ср Май 11 14:12:06 UTC 2016


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 на 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