Ошибка upstream timed out в Nginx

upstream timed out 101- ошибка, которая возникает при превышении лимита ожидания выполнения скрипта веб-сервером. Часто при таймауте соединения клиент будет видеть 504 ошибку.

 

 

upstream timed out 110 connection timed out в Nginx

 

В логах ошибки будут выглядеть так:

 

grep 'upstream timed out' /var/log/nginx/error.log

2018/08/13 17:01:03 [error] 32147#32147: *1197966 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 123.123.123.123, server: example.com, request: «POST /api.php/shop.product.update?id=3268 HTTP/1.1», upstream: «fastcgi://unix:/var/run/php7.0-example.sock», host: «example.com»

 

Если такие записи появляются прежде всего нужно установить причины. Возможны два варианта: 1) код так работать не должен — ждет ответа от какого-то недоступного ресурса или базы 2) длительное выполнение ожидаемо.

 

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

 

 

 

Как исправить ошибку если используется PHP-FPM

Если скрипты выполняет fpm — меняется значение параметра fastcgi_read_timeout 400; (о директиве)

Значение в секундах можно значительно увеличивать, обычно достаточно 400.

 

location / {
index index.php;
try_files $uri $uri/ =404;

fastcgi_connect_timeout 20;
fastcgi_send_timeout 120;
fastcgi_read_timeout 400;

}

 

Лимит может превышаться при длительном выполнении PHP скриптов.

 

Как исправить ошибку если используется Apache

При проксировании требуется добавить директиву proxy_read_timeout 150;

Значение также как в первом случае задается в секундах и означает лимит времени между операциями чтения.

 

location / {
index index.php;
try_files $uri $uri/ =404;

proxy_read_timeout 150;

}

 

После изменения конфигурации веб-сервер требуется перезапустить командой nginx -s reload.