Популяризация nginx среди нерусскоязычного населения :-)
Eugene
my-subscr at mail.ru
Tue Apr 18 15:22:12 MSD 2006
>По-моему вы что-то путаете. В комплекте с 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.
>
>
Как раз наоборот! Когда запросов мало и они быстро обрабатываются, то
достаточно одного процесса. Если очередь растет, например, если
обработка медленная - чтение БД, файловой системы и т.п., когда процесс
простаивает в ожидании, то как раз выгодно создавать новые процессы для
уменьшения времени ожидания.
После снижения нагрузки они убиваются.
Евгений
More information about the nginx-ru
mailing list