Жизнеспособность Apache (MPM Worker), FastCGI PHP 4/5.2/5.3 и MySQL 5

На моем сервере будут размещаться многочисленные веб-приложения на PHP, начиная с Joomla, Drupal, и некоторые устаревшие (читай: PHP4), а также другой пользовательский код, унаследованный от клиентов. Это будет машина разработки, используемая примерно дюжиной веб-разработчиков, и такие проблемы, как колебания нагрузки или особенно высокие ожидания нагрузки, не важны.

Теперь мой вопрос: есть ли какие-либо проблемы, о которых я должен знать при использовании Apache w/ MPM Worker, PHP 4/PHP 5.2/PHP 5.3 (все через FastCGI) и MySQL 5 (с кешем запросов 64 МБ)?

Я не тестировал различные приложения всесторонне, и только недавно я узнал, как установить PHP и использовать его через FastCGI (а не mod_php, что в этом случае казалось невозможным (учитывая несколько версий PHP и желание использовать MPM Worker поверх MPM). Prefork)).

Я пришел к выводу, что могут возникнуть проблемы с XCache и APC, а именно с проблемами, не связанными с безопасностью потоков, когда данные повреждаются, а возможность использовать MPM Worker становится недействительной. Это действительная проблема?

Я использую свой личный сервер тестирования (на Ubuntu Server Edition 10.04 в VirtualBox), на котором доступно 2 ГБ оперативной памяти.

Вот используемая конфигурация (реальный сервер, скорее всего, будет использовать конфигурацию, более приспособленную для своих целей):

Apache:

Server version: Apache/2.2.14 (Ubuntu)
Server built:   Apr 13 2010 20:22:19
Server's Module Magic Number: 20051115:23
Server loaded:  APR 1.3.8, APR-Util 1.3.9
Compiled using: APR 1.3.8, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Worker
    threaded:     yes (fixed thread count)
        forked:     yes (variable process count)

рабочий:

<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          400
    MaxRequestsPerChild 2000
</IfModule>

PHP./configure (PHP 4.4.9, PHP 5.2.13, PHP 5.3.2):

--enable-bcmath \
--enable-calendar \
--enable-exif \
--enable-ftp \
--enable-mbstring \
--enable-pcntl \
--enable-soap \
--enable-sockets \
--enable-sqlite-utf8 \
--enable-wddx \
--enable-zip \
--enable-fastcgi \
--with-zlib \
--with-gettext \

Apache php-fastcgi-setup.conf

FastCgiServer /var/www/cgi-bin/php-cgi-5.3.2
FastCgiServer /var/www/cgi-bin/php-cgi-5.2.13
FastCgiServer /var/www/cgi-bin/php-cgi-4.4.9

ScriptAlias /cgi-bin-php/ /var/www/cgi-bin/

2 ответа

Решение

Единственное, что вы должны спросить себя: действительно ли вы ожидаете, что такой большой трафик на вашем сайте потребует такой сложной и рискованной настройки (в отличие от "обычного" prefork + php в качестве модуля).

Я запустил несколько тяжелых php-сайтов с максимальной скоростью 10 млн. Обращений в день, и мне не пришлось переключаться на многопоточную модель. PHP сам по себе является беспорядком, поэтому его нужно перепрыгивать через обручи.

Я не могу согласиться с ответами выше. Это не имеет ничего общего с тем, какой объем трафика вы ожидаете, но сколько трафика кто-то может создать. Если вам не нравится услуга, которую любой злоумышленник может отключить по своей прихоти, вы должны спроектировать ее так, чтобы она выдерживала большую нагрузку, чем может создать средний злоумышленник.

Другие вопросы по тегам