fastcgi_read_timeout
Директива `fastcgi_read_timeout` задаёт максимально допустимое время, в течение которого NGINX будет ожидать ответа от FastCGI сервера до истечения таймаута. — NGINX HTTP Core
Описание
Директива `fastcgi_read_timeout` используется для указания продолжительности, в течение которой NGINX будет ожидать ответа от FastCGI сервера после отправки запроса. Это полезно в сценариях, когда обработка на стороне FastCGI может занять больше времени, чем ожидалось, и вы хотите избежать преждевременного закрытия соединений, которые всё ещё могут в итоге ответить. Таймаут применяется индивидуально к каждому запросу и может быть задан в разных контекстах, таких как `http`, `server` и `location`. Параметр этой директивы — значение времени, которое можно указать в секундах (s), минутах (m), часах (h) или днях (d). Если время ожидания превышено и ответ не получен, NGINX разорвёт соединение с FastCGI сервером и может вернуть клиенту ошибку. Настройка `fastcgi_read_timeout` может быть критически важна для оптимизации производительности приложений, которым требуется больше времени на обработку, например при выполнении сложных запросов к базе данных или операций с файлами. Важно отметить, что слишком низкое значение может привести к нежелательному закрытию соединений, тогда как слишком высокое — заставит клиентов ждать необоснованно долго ответа, который может никогда не поступить. Поэтому рекомендуется подбирать это значение, исходя из характеристик производительности приложения.
Пример конфига
location /api {
fastcgi_pass 127.0.0.1:9000;
fastcgi_read_timeout 120s;
}Установка слишком малого timeout может привести к тому, что корректные запросы будут прерываться, если их обработка займёт больше времени.
Если вы установите timeout выше максимального времени выполнения PHP, timeout всё равно будет применяться согласно этой директиве; поэтому вашему приложению, возможно, потребуется привести эти настройки в соответствие.