(nginx+Apache+php_mod) или (nginx+php_cgi) ?

На доскональное знание данной темы, не может претендовать, пожалуй ни один спец, из ныне живущих на земле. ;-)
Так поможем друг другу.

Модераторы: Trinity admin`s, Free-lance moderator`s

Ответить
borzih2
Junior member
Сообщения: 11
Зарегистрирован: 23 окт 2007, 17:40
Откуда: Петербург

(nginx+Apache+php_mod) или (nginx+php_cgi) ?

Сообщение borzih2 » 14 дек 2007, 17:36

Какую связку предпочесть: (nginx+Apache+php_mod) или (nginx+php_cgi) ?

На данной машине выполняются ТОЛЬКО php скрипты. Вся статика вынесена на отдельную машину, MySQL - вынесен на третью машину.

Сейчас работает связка (nginx+Apache+php_mod). По команде "top" имеется "load averages" порядка 5 в часы пик. Хочется уменьшить... Памяти 3Гб, из них 2Гб свободные. Будет ли (nginx+php_cgi) более отпимальным?

Andrey N. Oktyabrski
Advanced member
Сообщения: 229
Зарегистрирован: 25 окт 2005, 09:30
Откуда: Краснодар

Сообщение Andrey N. Oktyabrski » 16 дек 2007, 14:11

Прежде чем такое сделать, проверьте с пристрастием все пхпшные скрипты на предмет совместимости с php-fgi. В общем случае работать будет не всё. Например, перестанут работать URLы вида
http://host.name/script.php/one/two/ - то есть, виртуальные пути. Возможны и другие грабли, специфичные для конкретных скриптов (у меня были проблемы с vbulletin, например). Потеряете и .htaccess, если им пользуетесь.

В зависимости от настроек php-fcgi, может быть выигрыш процентов 10 относительно апача, но не в разы. Гораздо больше дадут eaccelerator/xcache и кэширование html в статические файлы с последующей раздачей их nginx'ом.

Если будете экпериментировать, возьмите php-fpm - набор патчей, исправляющий многие "особенности" работы php в позе fastcgi.

По-моему, такой переход имеет смысл, если очень уж хочется избавиться от апача. У меня сейчас половина php работает на nginx+php, половина на nginx+apache+mod_php. Разница в производительности не особо заметна.

borzih2
Junior member
Сообщения: 11
Зарегистрирован: 23 окт 2007, 17:40
Откуда: Петербург

Сообщение borzih2 » 16 дек 2007, 23:47

Большое спасибо за мнение!

Аватара пользователя
RedScorp
Advanced member
Сообщения: 158
Зарегистрирован: 24 июл 2003, 11:01
Откуда: Западный Казахстан, г.Уральск
Контактная информация:

Сообщение RedScorp » 17 мар 2008, 21:43

Доброго времени суток. К сожалению, не нашел ответа (хотя может я не так искал). В общем меня интересует связка "nginx+Apache+php_mod". Все установлено nginx висит на 80 порту, а Apache на 8080. Работают они прекрасно друг с другом. Хотя пришлось прикрутить к апачу еще и mod_rpaf (вычитал на nginx.info)
добавим в httpd.conf

LoadModule rpaf_module modules/mod_rpaf.so
## Mod_rpaf settings
RPAFenable On
RPAFproxy_ips 127.0.0.1 realip [realip1]
RPAFsethostname On

добавим в nginx.conf (раздел server)

proxy_set_header X-Forwarded-For $remote_addr;
Все бы ничего, да только вот Apache собран с опцией
# httpd -V | grep MPM
Server MPM:     Prefork
-D APACHE_MPM_DIR="server/mpm/prefork"

# cat httpd-mpm.conf
<IfModule mpm_prefork_module>
   StartServers          1
   MinSpareServers       1
   MaxSpareServers       5
   MaxClients          150
   MaxRequestsPerChild   0
</IfModule>
А это значит что он создаёт количество дочерних процессов на каждый запрос (будь то картинка или страница), в каждом из них ровно по одному потоку. В принципе, у меня на работе (под Linux) проблем нет, там Apache гордо один работает с парой статических страниц. Но вот на VDS у меня ограничение озу в 128 метров и проц 500 MHz (кстати, тут FreeBSD), где установлен DLE + phpBB. И судя по top'у память съедается вся (зачем Apache по 20 метров памяти?! или у меня руки кривые?!)
после запуска связки:
Mem: 89M Active, 39M Free
Swap: 256M Total, 256M Free

после открытия парочки страниц:
last pid: 41558;  load averages:  0.08,  0.07,  0.05
58 processes:  1 running, 57 sleeping
CPU states:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
Mem: 128M Active, 25M Inact
Swap: 256M Total, 256M Free

 PID USERNAME       THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND
29857 www              1  20    0 25668K 20416K lockf  2   0:04  0.00% httpd
29858 www              1   4    0 24960K 19444K kqread 0   0:04  0.00% httpd
29852 www              1  20    0 24620K 19196K lockf  0   0:03  0.00% httpd
29806 www              1  20    0 24096K 18752K lockf  6   0:04  0.00% httpd
29802 root             1   8    0 19084K 13336K nanslp 1   0:01  0.00% httpd
29803 root             1  96    0 18488K 13012K select 5   0:00  0.00% httpd
Так вот вопрос, если пересобрать Apache c поддержкой Worker (где один процесс по дефолту работает с 25 потоками) - уменьшит ли это нагрузку на сервер (Я понимаю, что если Apace откажет - то рухнут все сразу 25 потоков) ???

Аватара пользователя
CrazyFrog
Advanced member
Сообщения: 210
Зарегистрирован: 16 авг 2005, 23:09
Откуда: Мурманск

Сообщение CrazyFrog » 18 мар 2008, 00:47

в prefork он создаёт мастер-процесс, который fork'ает StartServers процессов для обслуживания запросов. На каждый запрос новый процесс не создаётся. 20 мб памяти нужно не апачу, а интерпретатору пыхпыха. Если вместо префорк поставить worker, то похапе сломается.

Аватара пользователя
RedScorp
Advanced member
Сообщения: 158
Зарегистрирован: 24 июл 2003, 11:01
Откуда: Западный Казахстан, г.Уральск
Контактная информация:

Сообщение RedScorp » 18 мар 2008, 09:29

Терять php не хотелось бы, и уж тем более прикручивать php-fgi и переделывать все под него. Получается, необходимо оптимизировать конфиги, а также запросы (у движков), ну либо увеличить память. Так?
"Я сюда еще вернусь..." (А.Макаревич)

Аватара пользователя
CrazyFrog
Advanced member
Сообщения: 210
Зарегистрирован: 16 авг 2005, 23:09
Откуда: Мурманск

Сообщение CrazyFrog » 19 мар 2008, 23:35

Если есть знание, что именно отдельные процедуры вызывают существенное потребление памяти и их можно модернизировать, то это возможно стоит сделать. С друго стороны, работа на 128m достаточно сложна и может оказатся существенно проще дорастить оперативки.

Ответить

Вернуться в «Серверы - ПО, Unix подобные системы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 21 гость