Мультитредовое ядро. Проблемы использования и реализации.

sivirk

Новичок
Мультитредовое ядро. Проблемы использования и реализации.

Суть такая:
существует основной поток, демон называемый - нода
треды, созданные с помошью pcntl_fork - вокеры
серверная часть - сервер
Все реализовано на PHP. Внутренняя связь, т.е. IPC реализовано с помощью парных сокетов, связь м/у сервером и нодой с помощью UDP сокетов. Пока что все на одной машине.
Вопрос вот в чем, при болшом количестве запросов, например, с помощью ab теста с другой машины в определенный момент рождается большое число httpd демонов которые просто висят. С чем это может быть связано?
И второй вопрос, вообще как Вы оцениваете такое решение?
 

AmdY

Пью пиво
Команда форума
тоесть демона ты запускаешь при вызове страницы через браузер?
чему тогда удивляешься результатам вызова страницы n-раз?
 

sivirk

Новичок
нет нет, Демон естественно однин, он запущен и при его запуске создается n - тредов (правдо их кол во может увеличиваться при большом кол ве запросов)
 

FractalizeR

Новичок
Но если треды создает демон самостоятельно, что тогда происходит при обращении к страницам через браузер?

Для чего вообще предназначена такая архитектура? Что за задача решается?

Кстати, нужно иметь ввиду, что "Process Control should not be enabled within a web server environment and unexpected results may happen if any Process Control functions are used within a web server environment."

Мануал PHP не рекомендует пользоваться pcntl функциями из-под веб-сервера
 

sivirk

Новичок
Конечно же нет, нода с тредами запускается ротдельно. Делается это как в целях распределения нагрузки, так и в целях кэширования данных от запроса к запросу.
 

sivirk

Новичок
Кэширование не главная цель.

Появился еще один вопрос: при использовании функции socket_sendto происходит утечка памяти и очень серьезная. Может кто знает в чем проблема? Извините. Уже решил.

-~{}~ 07.02.08 17:31:

Автор оригинала: AmdY
А вокеры, что у тебя делают?
Вокеры выполняют определенный функционал.
 

FractalizeR

Новичок
Я так ничего и не понял, что зачем в вашем проекте, как оно все работает, в чем проблема состоит....

Вокеры выполняют определенный функционал.
можно было бы просто сказать "не ваше дело, что там мои вокеры делают".

Вы не могли бы более подробно ваш проект описать?

существует основной поток, демон называемый - нода, треды, созданные с помошью pcntl_fork - вокеры серверная часть - сервер
Что делают все эти компоненты? pcntl_fork работает внутри web-сервара или где?
 

Gas

может по одной?
Ну я так понимаю что висит php-демон, создаёт воркеры, к webserver'у отношения никакого не имеет.
PHP-шный скрипт(образно) конектится через сокет к демону, демон адресует задание воркеру и потом возвращает ответ php-скрипту. Не могу представить как может по другому работать.

И второй вопрос, вообще как Вы оцениваете такое решение?
лично я оценить не могу, не спец в этих вопросах, одни говорят что демоны на php-это извращение, другие - что нужно уметь готовить. Поищи на форуме такие темы.

рождается большое число httpd демонов
ну так ab обращается ж к php-скрипту, вот и создаются, даже если скрипты не будут к демону конектиться - ситуация будет аналогичная. Или после отработки ab их количество не уменьшается?
 

Alexandre

PHPПенсионер
И второй вопрос, вообще как Вы оцениваете такое решение?
криво, попробуй srm

вообще-то лучше потратить времени в два раза больше, но написать нормального демона на Си, без утечек и прочих проблем памяти.
мне на это понадобилось около месяца - без опыта работы на Си.
 

cDLEON

Онанист РНРСlub
Предлагаю написать операционную систему на ПХП.
 

WP

^_^
Для кеширования не нужно такое хозяйство разводить... Всё проще. Кстати Я скоро опубликую одну штуковину интересную на тему кеширования.

Alexandre
Кстати это только неопытные думают что нельзя написать на PHP. Можно. И в качестве программ использовать PHP-скрипты. Интерфейс GTK+, не отличить будет от настоящего юникса. Компилировать Roadsend'ом... конечно загрузчик надо будет писать на асме, а вот что касается интерфейса - легко. И броузер можно на PHP смастерить =))) Работать будет довольно шустренько если грамотно сделать. Но имхо для таких вещей больше подходит C.
[offtopic]Ты в аське?[/offtopic]
 

sivirk

Новичок
Автор оригинала: WP
Для кеширования не нужно такое хозяйство разводить... Всё проще. Кстати Я скоро опубликую одну штуковину интересную на тему кеширования.
Я уже писал что кеширование не главная цель.
Цель - построение распределенной системы.
 

Alexandre

PHPПенсионер
Кстати Я скоро опубликую одну штуковину интересную на тему кеширования.
WP, пора открывать сайт собственных проектов.

-~{}~ 12.02.08 15:15:

sivirk srm для твоей задачи подойдет?
а что делает твой демон?
 

sivirk

Новичок
Суть такая, запускается демон и затем уже он запускает n вокеров, один из которых предсталяет UDP сокет сервер. Все вокеры, включая и сокет сервер соединены с Демоном парными сокетами. При поступлении запроса на сокетный вокер он отправляет его на Ноду (демон), а тот в свою очередь отправляет его на свободный вокер, где запрос выполняется и отправляется ответ.

Для кеширования используем Memcache
 
Сверху