Вешается php-fpm?

окружение: Debian Lenny, nginx, php-fpm (VDS: 720 MHz/384 Mb/12 Gb)



php частенько вешается с ошибкой в логах:

[pool www] server reached max_children setting(50), consaider raising it



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



1. Если все чилдрены заняты, то почему вылетает php? по логике nginx должен выдавать 503 ошибку и ждать свободных процессов



2. Как расчитать оптимальное кол-во чилдренов для vds'ки?
  • Вопрос задан
  • 4060 просмотров
Пригласить эксперта
Ответы на вопрос 3
homm
@homm
Оптимальное количество зависит от проекта, но 50 — намного больше чем необходимо для приведенно конфигурации.

Когда чилдренов становится настолько много, чем они заняты? Могут ли они ждать ответа от внешних сервисов, которые им подолгу не отвечают?
Ответ написан
akalend
@akalend
программирую
Оптимальное кол-во деток PHP определяется практически,
теоретически оно должно быть х2 деток nginx.

Посмотри время затраченное на отработку одного скрипта.
Если скрипты тяжелые, а от этого надо избавляться как можно скорее, то деток PHP должно быть равно с запасом соотношению отработки скрипта и частоте приходящих запросов.
Ответ написан
bo2l
@bo2l
у меня несколько пулов:

/etc/nginx/nginx.conf
===

upstream backend
{
server unix:/tmp/fcgi1.sock weight=100 max_fails=10
fail_timeout=5;
server unix:/tmp/fcgi2.sock weight=100 max_fails=10
fail_timeout=5;
server unix:/tmp/fcgi3.sock weight=100 max_fails=10
fail_timeout=5;
}

location ~ \.php$ { ## Execute PHP scripts
expires off; ## Do not cache dynamic content
fastcgi_pass backend;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params; ## See /etc/nginx/fastcgi_params
}

===

/etc/php-fpm.conf
===
section name=«pool»
value name=«name»>default1/value
value name=«listen_address»>/tmp/fcgi1.sock /value

section name=«pool»
value name=«name»>default2/value
value name=«listen_address»>/tmp/fcgi2.sock /value

section name=«pool»
value name=«name»>default3/value
value name=«listen_address»>/tmp/fcgi3.sock /value
===
настройки каждого пула — аналогичные.

p.s. парсер сьедает знаки "<" ">"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 окт. 2020, в 21:13
600 руб./в час
01 окт. 2020, в 19:53
60000 руб./за проект
01 окт. 2020, в 19:40
15000 руб./за проект