[nginx] fastcgi_connect_timeout

Выдержка из документации:

Синтаксис: fastcgi_connect_timeout время;
Умолчание: fastcgi_connect_timeout 60s;
Контекст: http, server, location

Задаёт таймаут для установления соединения с FastCGI-сервером. Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд.

Возникает вопрос, откуда это ограничение и есть ли возможность поставить больше, чем 75 секунд. В рассылке по nginx был найден исчерпывающий ответ. Приведу ответ цитатой:

nginx изначально разрабатывался под FreeBSD, на ней (цитата из tcp(4)):

: Timeout, in milliseconds, for new, non-established TCP connections.
: The default is 75000 msec.

Если копнуть глубже, то на Linux системах он намного меньше (порядка 20 секунд). То есть, значение fastcgi_connect_timeout на Linux’e должно быть не больше 20, иначе оно будет игнорироваться и будет использовать ядерные значения для timeout’a. Иными словами, вы не можете поставить больше, чем выставлено системой. Выходит, что бы повлиять это, нужно изменить значения timeout’a. Приступим

FreeBSD/OpenBSD

# sysctl net.inet.tcp.keepinit=180000

Solaris

# ipadm set-prop -p _keepalive_interval=1800000 tcp

Linux

# sysctl net.ipv4.tcp_syn_retries = 8

Для Linux систем есть небольшая оговорка: дело в том, что это количество попыток, а не время в секундах. Экспериментальным путём было установлено, что значение 6 соответствует 45 секундам, 7 — 90, 8 — 190. Подробнее об этом, можно прочесть здесь

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *