fastcgi + keepalive
Maxim Dounin
mdounin на mdounin.ru
Чт Июл 21 13:14:30 UTC 2016
Hello!
On Thu, Jul 21, 2016 at 07:49:28AM -0400, skeletor wrote:
> Всем привет.
> Почему вот такая конструкция не поддерживает keepalive:
>
> location / {
> ...
> fastcgi_pass 127.0.0.1:9000;
> fastcgi_keep_conn on;
> ...
> }
>
> а вот такая - поддерживает:
>
> upstream fcgi_backend {
> server 127.0.0.1:9000;
> keepalive 32;
> }
> ...
> location / {
> ...
> fastcgi_pass fcgi_backend;
> fastcgi_keep_conn on;
> ...
> }
>
> Проверял состояние соединений через netstat.
Для поддержания постоянных соединений требуется две вещи:
- Проинструктировать бекенд, чтобы по завершению запроса он
соединение не закрывал. Для FastCGI это делает директива
fastcgi_keep_conn.
- Включить собственно кеш соединений. Это делает директива
keepalive в рамках блока upstream.
При использовании адреса в директиве fastcgi_pass, как в вашем
первом примере, создаётся неявный upstream с настройками по
умолчанию. Кеша соединений в нём нет, и соответственно постоянные
соединения не используются.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru