В данный момент изучаю реализацию FastCGI на perl с использованием FCGI и FCGI::ProcManager. Насколько я вижу, главный недостаток такого варианта по сравнению с Apache+FastCGI в том, что ProcManager создает фиксированное количество процессов и только поддерживает их количество на указанном уровне.
Я прикидываю как можно реализовать динамическое управление количеством процессов в данном варианте. Как переделать для этого FCGI::ProcManager, описано, например, вот здесь - http://habrahabr.ru/blogs/perl/124691/. Однако, встает вопрос мониторинга нагрузки, в зависимости от которой нужно будет менять количество процессов. Есть два варианта:
- Проверяя занятость backlog
- Проверяя занятость имеющихся процессов
По первому я не нашел никакой информации. Возможно-ли вообще у сокета как-то проверять количество запросов ожидающих в backlog?
Второй вариант представляется более реалистичным, но, аналогично, не совсем понятно как мониторить сколько процессов в данный момент заняты. Теоретически, это должно быть просто, т.к. в начале запроса вызывается pm_pre_dispatch, а в конце pm_post_dispatch. Но где конкретно найти информацию по количеству работающих запросов?
Буду благодарен любой информации по этому поводу.