LINUX.ORG.RU

FastCGI perl и динамическое создание процессов


0

1

В данный момент изучаю реализацию FastCGI на perl с использованием FCGI и FCGI::ProcManager. Насколько я вижу, главный недостаток такого варианта по сравнению с Apache+FastCGI в том, что ProcManager создает фиксированное количество процессов и только поддерживает их количество на указанном уровне.

Я прикидываю как можно реализовать динамическое управление количеством процессов в данном варианте. Как переделать для этого FCGI::ProcManager, описано, например, вот здесь - http://habrahabr.ru/blogs/perl/124691/. Однако, встает вопрос мониторинга нагрузки, в зависимости от которой нужно будет менять количество процессов. Есть два варианта:

  • Проверяя занятость backlog
  • Проверяя занятость имеющихся процессов

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

Второй вариант представляется более реалистичным, но, аналогично, не совсем понятно как мониторить сколько процессов в данный момент заняты. Теоретически, это должно быть просто, т.к. в начале запроса вызывается pm_pre_dispatch, а в конце pm_post_dispatch. Но где конкретно найти информацию по количеству работающих запросов?

Буду благодарен любой информации по этому поводу.

В общем, сам прикинул. Можно использовать измененные функции pm_pre_dispatch, pm_post_dispatch для отслеживания занятости процессов, а в pm_wait отрабатывать добавление и убирание процессов в соответствии с настройками.

UncleAndy ★★★
() автор топика
Ответ на: комментарий от UncleAndy

Начал делать и сразу столкнулся с тем что нужно межпроцессное взаимодействие что-бы главноему процессу передавать данные когда запускается и освобождается каждый из детей. Сделал все на сообщениях через msgget, mgssnd, msgrcv.

UncleAndy ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.