Сколько соединений может держать php-fpm?

945 views
Skip to first unread message

alekc...@gmail.com

unread,
Dec 30, 2008, 6:04:54 PM12/30/08
to highload-php-ru
Собственно от чего зависит количество одновременных соединений которое
может обработать php-fpm? Это зависит от max_children?

К примеру для Apache директивой MaxClients задаем, сколько
одновременных коннектов он потянет и сразу это при просмотре файла
конфига видно.

Собственно хочется это знать что бы получить сбалансированную связку
nginx+php-fpm что бы не получилось так, что nginx принимает коннекты
от клиентов к бэкэнду, а тот не может их обработать.

Alexey A. Rybak

unread,
Dec 31, 2008, 3:58:46 AM12/31/08
to highloa...@googlegroups.com
2008/12/31 alekc...@gmail.com <alekc...@gmail.com>:

AFAIK в PHP-FPM не реализован (пока) apache-like механизм рождения
детей при необходимости - если говорить о "правильной" модели,
адаптированной под нагрузку. Поэтому число одновременно выполняемых
динамических запросов fcgi-процессами ограничено параметром
max_children - числом дочерних fcgi-процессов. Какого-то иного способа
сделать "сбалансированную" связку кроме как выставить несколько
десятков max_children и следить за логами я не знаю. Впрочем выставить
это скажем в 50 при условии что пхп не течет сильно в каком-нибудь
неожиданном месте - по-моему это покроет большиство задач. Можно
выставить ulimit на память чтобы процессы прибивало ядро - это всяко
лучше сделать независимо от. У меня был реквест к Андрею более мягко
прибивать процессы по лимитам на отожранную память - но это в будущем.
Андрей будет доступен через неделю - возможно, он даст более
конкретные рекомендации.

--

wbr,
fisher

alekc...@gmail.com

unread,
Dec 31, 2008, 6:21:11 AM12/31/08
to highload-php-ru
Спасибо, ясно.

Т.е. получаем, что один дочерний процесс держит один коннект. По сути
принцип того же Apache собранного по схеме fork-а?

Просто я архитектуры php-fpm не знаю, но мне отчего то казалось, что
он работает подобно Apache в worker-е когда коннект держиться в треде
дочернего процесса, а в дочернем процессе имеем несколько тредов.
Видимо напутал, или это в TODO.

Alexey A. Rybak

unread,
Dec 31, 2008, 6:30:59 AM12/31/08
to highloa...@googlegroups.com
2008/12/31 alekc...@gmail.com <alekc...@gmail.com>:

вот это не в туду точно ;) нафигнафиг треды
в этом нет смысла потому что fpm не обслуживает соединения - это делает nginx
а апач тредом и пхп собирает и с клиентом работает

--

wbr,
fisher

Sergej Kandyla

unread,
Dec 31, 2008, 2:04:36 PM12/31/08
to highloa...@googlegroups.com
Alexey A. Rybak пишет:
ага, + тредовые апач с мод_пхп афаик шибко глючные.

Насчет нагрузки php-fpm, нужно мониторить просто систему. Если скрипты
написаны криво, либо конектов шибко много, то чаилды пхп будут постоянно
в состоянии RUN, соотвественно если все чаилды в этом состоянии - новый
конект уже не приймут. На сайте 502 увидете.


Также можно в nginx в локейшене php прописать аксес лог для запросов к
динамике и данный лог уже мониторить.
На практике 5 дефолтных чаилдов php-fpm, (+ xcache) держат на текущий
момент около 100к пейджвиевов, 10к уник. хост (к динамике), причем, я
бы не сказал что это возможный предел, просто у мну на текущий момент
больше нету. Уверен, что народ может привести примеры и куда более
впечатляющие )

Пользуясь случаем - всех с Новым Годом! Успехов и впечатлений! ;)

alekc...@gmail.com

unread,
Jan 1, 2009, 11:53:19 AM1/1/09
to highload-php-ru
On 31 дек 2008, 23:04, Sergej Kandyla <sk.p...@gmail.com> wrote:
> Alexey A. Rybak пишет:

> На практике 5 дефолтных чаилдов php-fpm,  (+ xcache) держат на текущий
> момент около 100к пейджвиевов, 10к уник. хост (к динамике),  причем, я
> бы не сказал что это возможный предел,
Ого! Это же сколько в секунду то выходит? У меня 5 дефолных чаилдов,
текстовый скрипт (цикл в 10000 итераций, время выполнения 2 сек) и при
ab -n 150 -c 5 получаю ~32 запросов/сек. Поднимаю до 10 чаилдов, делаю
ab -n 150 -c 10, но получаю все теже ~32 запросов/сек. Хотя по мне
должно отрабатываться то быстрее.

Монашёв Михаил

unread,
Jan 1, 2009, 1:32:40 PM1/1/09
to Alexey A. Rybak
Здравствуйте, Alexey.

> У меня был реквест к Андрею более мягко прибивать процессы по
> лимитам на отожранную память - но это в будущем.

А не правильнее было бы найти и устранить утечку памяти?

--
С уважением,
Михаил mailto:postm...@softsearch.ru

Alexey A. Rybak

unread,
Jan 1, 2009, 3:04:40 PM1/1/09
to highloa...@googlegroups.com
2009/1/1 Монашёв Михаил <postm...@softsearch.ru>:

>
> Здравствуйте, Alexey.
>
>> У меня был реквест к Андрею более мягко прибивать процессы по
>> лимитам на отожранную память - но это в будущем.
>
> А не правильнее было бы найти и устранить утечку памяти?

ну обычно это две параллельные задачи - найти причину и обеспечить
нормальную работу пока причина не устранена ;) найти причину часто не
так просто как кажется. когда причина найдена - не факт что можно
быстро её устранить, это может потребовать переписывания большой части
кода. а пока вся эта канитель происходит, нужна стабильная работа
веб-серверов.

--

wbr,
fisher

Sergej Kandyla

unread,
Jan 3, 2009, 3:54:14 AM1/3/09
to highloa...@googlegroups.com
alekc...@gmail.com пишет:
то данные за сутки, за секунду вообщемто не так и много получается.
"Искусственные тесты дают искусственные результаты"

alekc...@gmail.com

unread,
Jan 3, 2009, 6:02:59 PM1/3/09
to highload-php-ru
On 3 янв, 12:54, Sergej Kandyla <sk.p...@gmail.com> wrote:
> то данные за сутки, за секунду вообщемто не так и много получается.
> "Искусственные тесты дают искусственные результаты"

Это да, но искуственный тест позволяет хотя бы приблизительно оценить
что может в итоге получить, потенциально слабые места, а нередко
прикинуть и приемлемую архитектуру создаваемого приложения. К примеру,
клиентское приложение дергающее сервер через XHR каждую секунду. При
известном (хотя бы приблизительно) количестве запросов которое может
обработать сервер при данной аппаратной конфигурации, а так же
предполагаемом количестве клиентов можно оценить требуемые аппаратные
ресурсы в целом. А по ним к примеру судить о том, что данной задачи
выбор PHP может быть неприемлем и потребуется перейти на С-шный
вариант серверного приложения. Ну и т.д.

Alexandre Kalendarev

unread,
Jan 4, 2009, 4:06:19 AM1/4/09
to highloa...@googlegroups.com
>А по ним к примеру судить о том, что данной задачи
выбор PHP может быть неприемлем и потребуется перейти на С-шный
вариант серверного приложения.

В настоящее время разработка на Си возможно будет стоить дороже требуемого дополнительного аппаратного обеспечения, хотя есть исключения. Лучше использовать комбинацию Си + РНР.

alekc...@gmail.com

unread,
Jan 4, 2009, 5:47:09 AM1/4/09
to highload-php-ru
On 4 янв, 13:06, Alexandre Kalendarev <akal...@mail.ru> wrote:
> Лучше использовать комбинацию Си + РНР.

Любопытно... а не затруднит привести пример такого приложения? Просто
не очень понятно, какие преимущества может дать гетерогенная система
по сравнению с приложением в пределах одного языка.

Александр Лозовюк

unread,
Jan 4, 2009, 7:55:08 AM1/4/09
to highloa...@googlegroups.com
например: Вот есть проект - Ogame.ru, где система на PHP, а вот там
есть момент, требующий серьезной ресурсоемкости - расчет стражения. По
данным моим, у них под этот расчет десятки серверов отдельно есть и
всеравно загибается, особенно в немецкой части игры. Вот вынос модуля
расчета сражения в С демон обеспечит увеличение производительности. Но
так как это трудоемко писать, то на С реализовуется только один
модуль, по сути функция, остальное остается на любимом и хорошем РНР
:) зачем все переписывать на С если реально оптимизировать часто надо
одну-другую функцию/функционал?

4 января 2009 г. 12:47 пользователь alekc...@gmail.com
<alekc...@gmail.com> написал:

--
C уважением, Александр Лозовюк
Alpha-Beta-Release Blog
http://abrdev.com

Alexandre Kalendarev

unread,
Jan 4, 2009, 11:09:08 AM1/4/09
to highloa...@googlegroups.com
>Любопытно... а не затруднит привести пример такого приложения? Просто
не очень понятно, какие преимущества может дать гетерогенная система
по сравнению с приложением в пределах одного языка.

вообще-то примеров достаточно. особенно там где есть расчеты или графика. Вот мой предпоследний проект:
обработка графических изображений, определение рамки отсканированных изображений для дальнейшего выделение фрейма.

Alexandre Kalendarev

unread,
Jan 4, 2009, 11:13:51 AM1/4/09
to highloa...@googlegroups.com
>например: Вот есть проект - Ogame.ru, где система на PHP
например "Территория", там вся расчетная часть стратегий написана на сях

еще пример - реализация рекламно-баннерного движка. на сях пишется демоны по обработки входящих соединений, расчета статистики и пр...
а пользователям доступ через WEB интерфейс на РНР.

alekc...@gmail.com

unread,
Jan 4, 2009, 4:44:22 PM1/4/09
to highload-php-ru
Спасибо. Да, примеры показательные.

anlide

unread,
Jan 7, 2009, 3:06:44 PM1/7/09
to highload-php-ru
1м хитов / 35к уников. 50 чаилдов.
Работает замечательно. 502 уже очень давно не видели даже в пиковых
нагрузках. Есть специфичные страницы которые загружаются 50-100 секунд
(математики много).
Опытным путём было установлено (4 месяа назад), что при 25 чаилдах 502
проскакивает.


С рождеством! Желаю всем развития сайтов, чтобы domaintion можно было
нормальный автору делать :)

On 31 дек 2008, 21:04, Sergej Kandyla <sk.p...@gmail.com> wrote:
> Alexey A. Rybak пишет:
>

alekc...@gmail.com

unread,
Jan 8, 2009, 6:35:44 PM1/8/09
to highload-php-ru
Здорово. В общем понятно, в плане конфига сервера нужно упирать на ОЗУ.
Reply all
Reply to author
Forward
0 new messages