По-моему вы что-то путаете. В комплекте с lighttpd идет утилита для
запуска php в режиме fastcgi, которая делает кучу всяких побочных
полезных действий. В конфиге можно указывать количество запущенных
процессов и периодичность перезапуска. FCGI сервер стартует при
запуске системы, стандартными способами, теми же что и остальные
демоны, и потом работает вроде бы стабильно. Возможные утечки памяти
ликвидируются при автоматическом перезапуске.
Ну так это к lighttpd идет. А нам надо для nginx :)
Есть два варианта использования php в виде FastCGI: с ипользованием
внешнего менеджера процессов. Как вы описываете.
Аналогично работает mod_fastcgi из apache. Второй вариант -
использование менеджера встроенного в php. Он сам может отслеживать
количество процессов, убивать и создавать новые.
В каждом из этих вариантов есть два режима: статический и динамический.
Вы описали статический - при запуске системы (или апача) запускаются
factcgi сервера и постоянно висят в памяти.
Я ратую как раз за динамический - процесс запускается только в момент
запроса, потом убивается. На мой взгляд, это идеальный режим работы для
виртуального хостинга.
Почему?
- каждый сайт обслуживается отдельным процессом или при большой нагрузке
пулом процессов.
- каждый процесс может работать от своего пользователя со своими правами
и ограничениями. Так гораздо проще запретить пользователям "лазить" в
системе и чужих папках - потому, что за этим будет следить не встроенная
"безопасность" php, а ядро операционной системы, что гораздо быстрее и
надежнее. Я паталогически не доверяю встроенной безопасности php
(safe_mode и иже с ним), и недавние ошибки
(http://www.opennet.ru/opennews/art.shtml?num=7318) только подтверждают
мой тезис. Я вижу только одно средство для борьбы с такими дырами -
разделение на уровне операционной системы.
-при низкой частоте запросов работают один апач и один пхп. Если
запросов приходит много, то запускаются дополнительные апачи и
пхп-процессы. Каждого столько сколько нужно. Если у Вас mod_php, то у
вас запускается монолит apache+mod_php+еще куча всего
Кроме того, запуск php в режиме FCGI занимает несколько десятков
секунд, если я не ошибаюсь.
У меня запуск занимает 1 секунду, а перезапуск - 2.
Поэтому о динамике тут говорить сложно.
Плюс отдельный пул процессов для каждого сайта довольно сильно
подрежет преимущества концепции FCGI.
Как раз наоборот! Когда запросов мало и они быстро обрабатываются, то
достаточно одного процесса. Если очередь растет, например, если
обработка медленная - чтение БД, файловой системы и т.п., когда процесс
простаивает в ожидании, то как раз выгодно создавать новые процессы для
уменьшения времени ожидания.