Re: Вопрос про http/2 и fastcgi

Валентин Бартенев vbart на nginx.com
Сб Апр 2 21:41:56 UTC 2016


On Saturday 02 April 2016 18:30:51 Vladislav Shabanov wrote:
> Всем добрый день.
> 
> Имеем вот такой вот конфиг:
> server {
>     listen         443 ssl http2;
>     server_name    …
>     # дальше много всего про ssl_***
> 
>    location / {
>        fastcgi_pass   unix:/run/django-fcgi.sock;
>        fastcgi_param  SERVER_PROTOCOL  $server_protocol;
>        # ещё много других fastcgi_param
>        fastcgi_pass_header      Authorization;
>        fastcgi_intercept_errors on;
>     }
>     ….
> }
> 
> По ощущениям, после включения http/2 обращения из одного браузера стали чаще 
обрабатываться последовательно. Раньше браузер открывал 6 сокетов и гонял в 
них страницы + ajax запросы параллельно, до fastcgi они доходили параллельно и 
исполнялись они тоже параллельно. А теперь несколько параллельно пришедших по 
http/2 запросов, по ощущениям, выполняются последовательно. По крайней мере в 
трассе fcgi демона, если сделать grep по сессии пользователя, я теперь вижу 
много строчек подряд с одним и тем же pid.
> 
> Это так или я не прав?
> 

Вполне может быть.

Когда браузер открывал несколько соединений, то они могли попадать в
разные рабочие процессы.

В HTTP/2 все запросы приходят последовательно по одному соединению, 
соответственно обрабатываются одним и тем же рабочим процессом и если
FastCGI демон отвечает достаточно быстро, то вполне можно наблюдать
такую картину.

--
Валентин Бартенев


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