Назад | Перейти на главную страницу

Ресурс временно недоступен при подключении к апстриму (php5-fpm)

Я часто получаю эту ошибку на случайных страницах, когда они похожи на ~ + 10K соединений (netstat -an | grep 80 | wc -l). Это происходит, пока есть еще + 10 ГБ свободной памяти, а загрузка сервера меньше 3.

Мои соответствующие конфиги:

/etc/php5/fpm/php.ini

memory_limit = 1024M
default_socket_timeout = 120

/etc/php5/fpm/pool.d/www.conf

pm = dynamic 
pm.max_children = 30 
pm.start_servers = 5
pm.min_spare_servers = 2 
pm.max_spare_servers = 5 
;pm.max_requests =20000 #uncommented with any value didn't fixed
request_terminate_timeout = 120s

Я также удвоил указанные выше vlues (т.е. 60 детей, 10 начальных, 10 максимальных серверов) безрезультатно.

/etc/nginx/nginx.conf

worker_connections 4024;
keepalive_timeout 10;

Сам Nginx за Varnish и memcached включен. рендеринг страницы в целом выполняется довольно быстро.

Кажется, это довольно распространенная проблема. Я не смог найти никакого полезного решения или даже анализа возможных причин. Так что ваши советы / решения очень ценятся.

К сожалению, без подробностей трудно дать однозначный ответ на этот вопрос.

У меня есть пара предположений:

Мое первое предположение состоит в том, что ваши рабочие сокеты php5-fpm имеют слишком маленькое невыполненное прослушивание для вашей нагрузки. Длина очереди невыполненных работ по умолчанию в Linux составляет 128.

Для его увеличения вам следует:

  1. Увеличение net.core.somaxconn sysctl значение.
  2. Увеличение listen.backlog Настройка конфигурации php5-fpm.

Например, вы можете попробовать увеличить оба значения до 2048, чтобы посмотреть, поможет ли это.

Мое второе предположение - это ограничение на максимальное количество открытых файловых дескрипторов для рабочих процессов nginx. Правильный способ увеличения зависит от вашего дистрибутива. В Ubuntu / Debian вам следует заглянуть в /etc/default/nginx файл и worker_rlimit_nofile Настройка конфигурации nginx.