К примеру для Apache директивой MaxClients задаем, сколько
одновременных коннектов он потянет и сразу это при просмотре файла
конфига видно.
Собственно хочется это знать что бы получить сбалансированную связку
nginx+php-fpm что бы не получилось так, что nginx принимает коннекты
от клиентов к бэкэнду, а тот не может их обработать.
AFAIK в PHP-FPM не реализован (пока) apache-like механизм рождения
детей при необходимости - если говорить о "правильной" модели,
адаптированной под нагрузку. Поэтому число одновременно выполняемых
динамических запросов fcgi-процессами ограничено параметром
max_children - числом дочерних fcgi-процессов. Какого-то иного способа
сделать "сбалансированную" связку кроме как выставить несколько
десятков max_children и следить за логами я не знаю. Впрочем выставить
это скажем в 50 при условии что пхп не течет сильно в каком-нибудь
неожиданном месте - по-моему это покроет большиство задач. Можно
выставить ulimit на память чтобы процессы прибивало ядро - это всяко
лучше сделать независимо от. У меня был реквест к Андрею более мягко
прибивать процессы по лимитам на отожранную память - но это в будущем.
Андрей будет доступен через неделю - возможно, он даст более
конкретные рекомендации.
--
wbr,
fisher
Т.е. получаем, что один дочерний процесс держит один коннект. По сути
принцип того же Apache собранного по схеме fork-а?
Просто я архитектуры php-fpm не знаю, но мне отчего то казалось, что
он работает подобно Apache в worker-е когда коннект держиться в треде
дочернего процесса, а в дочернем процессе имеем несколько тредов.
Видимо напутал, или это в TODO.
вот это не в туду точно ;) нафигнафиг треды
в этом нет смысла потому что fpm не обслуживает соединения - это делает nginx
а апач тредом и пхп собирает и с клиентом работает
--
wbr,
fisher
Насчет нагрузки php-fpm, нужно мониторить просто систему. Если скрипты
написаны криво, либо конектов шибко много, то чаилды пхп будут постоянно
в состоянии RUN, соотвественно если все чаилды в этом состоянии - новый
конект уже не приймут. На сайте 502 увидете.
Также можно в nginx в локейшене php прописать аксес лог для запросов к
динамике и данный лог уже мониторить.
На практике 5 дефолтных чаилдов php-fpm, (+ xcache) держат на текущий
момент около 100к пейджвиевов, 10к уник. хост (к динамике), причем, я
бы не сказал что это возможный предел, просто у мну на текущий момент
больше нету. Уверен, что народ может привести примеры и куда более
впечатляющие )
Пользуясь случаем - всех с Новым Годом! Успехов и впечатлений! ;)
> У меня был реквест к Андрею более мягко прибивать процессы по
> лимитам на отожранную память - но это в будущем.
А не правильнее было бы найти и устранить утечку памяти?
--
С уважением,
Михаил mailto:postm...@softsearch.ru
ну обычно это две параллельные задачи - найти причину и обеспечить
нормальную работу пока причина не устранена ;) найти причину часто не
так просто как кажется. когда причина найдена - не факт что можно
быстро её устранить, это может потребовать переписывания большой части
кода. а пока вся эта канитель происходит, нужна стабильная работа
веб-серверов.
--
wbr,
fisher
Это да, но искуственный тест позволяет хотя бы приблизительно оценить
что может в итоге получить, потенциально слабые места, а нередко
прикинуть и приемлемую архитектуру создаваемого приложения. К примеру,
клиентское приложение дергающее сервер через XHR каждую секунду. При
известном (хотя бы приблизительно) количестве запросов которое может
обработать сервер при данной аппаратной конфигурации, а так же
предполагаемом количестве клиентов можно оценить требуемые аппаратные
ресурсы в целом. А по ним к примеру судить о том, что данной задачи
выбор PHP может быть неприемлем и потребуется перейти на С-шный
вариант серверного приложения. Ну и т.д.
В настоящее время разработка на Си возможно будет стоить дороже требуемого дополнительного аппаратного обеспечения, хотя есть исключения. Лучше использовать комбинацию Си + РНР.
Любопытно... а не затруднит привести пример такого приложения? Просто
не очень понятно, какие преимущества может дать гетерогенная система
по сравнению с приложением в пределах одного языка.
4 января 2009 г. 12:47 пользователь alekc...@gmail.com
<alekc...@gmail.com> написал:
--
C уважением, Александр Лозовюк
Alpha-Beta-Release Blog
http://abrdev.com
вообще-то примеров достаточно. особенно там где есть расчеты или графика. Вот мой предпоследний проект:
обработка графических изображений, определение рамки отсканированных изображений для дальнейшего выделение фрейма.
еще пример - реализация рекламно-баннерного движка. на сях пишется демоны по обработки входящих соединений, расчета статистики и пр...
а пользователям доступ через WEB интерфейс на РНР.
С рождеством! Желаю всем развития сайтов, чтобы domaintion можно было
нормальный автору делать :)
On 31 дек 2008, 21:04, Sergej Kandyla <sk.p...@gmail.com> wrote:
> Alexey A. Rybak пишет:
>