ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Популяризация nginx среди нерусскоязычног о населения :-)




По-моему вы что-то путаете. В комплекте с 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.
Как раз наоборот! Когда запросов мало и они быстро обрабатываются, то достаточно одного процесса. Если очередь растет, например, если обработка медленная - чтение БД, файловой системы и т.п., когда процесс простаивает в ожидании, то как раз выгодно создавать новые процессы для уменьшения времени ожидания.
После снижения нагрузки они убиваются.


Евгений



 




Copyright © Lexa Software, 1996-2009.