Ошибка connect() to unix:/var/run/php/php7.x-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream указывает на сбой при установлении соединения с сервером PHP-FPM. Функция connect() используется для установления соединения, но в данном случае оно не удалось из-за временной недоступности ресурса. В этой статье рассмотрим как исправить эту ошибку.

connect() to unix:/var/run/php/php7.x-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream: 

Эта часть указывает на то, что Nginx не может установить соединение с сервером PHP-FPM. В нем особо упоминается, что соединение с файлом сокета Unix /var/run/php/php7.x-fpm.sockне удалось из-за того, что ресурс временно недоступен.

upstream timed out (110: Connection timed out) while reading response header from upstream

Эта часть предполагает, что вышестоящему серверу Nginx (PHP-FPM) потребовалось слишком много времени для ответа, что привело к тайм-ауту. В нем особо упоминается, что время ожидания соединения истекло при чтении заголовка ответа с вышестоящего сервера.

Восходящий сервер: в контексте Nginx восходящий сервер относится к внутреннему серверу, на который Nginx перенаправляет запросы. В данном случае вышестоящим сервером является PHP-FPM.

Тайм-аут: тайм-аут возникает, когда серверу требуется больше времени, чем указано, для ответа на запрос. В этом случае время ожидания подключения к вышестоящему серверу (PHP-FPM) истекло, пока Nginx ждал заголовки ответа.

Чтобы решить ошибку, можно выполнить следующие шаги:

  • Проверить, запущена ли служба PHP-FPM: Убедиться, что служба PHP-FPM запущена на вашем сервере. Это можно сделать это, выполнив команду systemctl status php7.x-fpm(при условии, что вы используете PHP версии 7.4). Если он не запущен, нужно запустить службу с помощью systemctl start php7.x-fpm.
  • Проверить путь к файлу сокета Unix. Убедиться, что путь к файлу сокета Unix, указанный в сообщении об ошибке ( /var/run/php/php7.x-fpm.sock), верен. Если он отличается, обновить файл конфигурации Nginx, чтобы использовать правильный путь.
  • Проверить права доступа к файлу: Убедиться, что файл сокета Unix имеет правильные разрешения, чтобы Nginx мог получить к нему доступ. Файл должен быть доступен для чтения и выполнения пользователем Nginx. Можно использовать ls -lкоманду, чтобы проверить разрешения и изменить их при необходимости.
  • Перезапустить Nginx: после внесения любых изменений перезапустить службу Nginx, используя systemctl restart nginx для применения изменений.
  • Увеличить значения времени ожидания: можно увеличить значения времени ожидания в файле конфигурации Nginx, чтобы предоставить вышестоящему серверу больше времени для ответа. Найти директивы proxy_connect_timeout, proxy_send_timeoutи proxy_read_timeout в файле конфигурации Nginx и соответствующим образом увеличьте их значения. Например, установить для них значения: proxy_connect_timeout 60s; , proxy_send_timeout 60s; и proxy_read_timeout 60s; установить время ожидания 60 секунд.
  • Проверить производительность внутреннего сервера: если проблема с тайм-аутом не устранена, это может быть связано с перегрузкой внутреннего сервера (PHP-FPM) или проблемами с производительностью. Нужно контролировать использование ресурсов сервера (ЦП, память и т. д.) и при рассмотреть возможность оптимизации конфигурации PHP-FPM или обновления сервера.