Ресурс временно недоступен при подключении к апстриму (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

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

/etc/nginx/nginx.conf

worker_connections 4024;
keepalive_timeout 10;

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

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

1 ответ

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

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

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

Чтобы увеличить его, вы должны:

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

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

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

Другие вопросы по тегам