Viabilidade do Apache (MPM Worker), do FastCGI PHP 4 / 5.2 / 5.3 e do MySQL 5

1

Meu servidor hospedará inúmeros aplicativos da Web em PHP, desde o Joomla, Drupal e alguns legados (leia-se: PHP4) e outros códigos personalizados herdados dos clientes. Essa será uma máquina de desenvolvimento usada por cerca de uma dúzia de desenvolvedores da Web, e problemas como cargas flutuantes ou expectativas de alta carga não são importantes.

Agora, minha pergunta: há alguma preocupação que eu deva saber ao usar o Apache com MPM Worker, PHP 4 / PHP 5.2 / PHP 5.3 (todos via FastCGI) e MySQL 5 (com um cache de consulta de 64MB)?

Eu não testei os vários aplicativos extensivamente e só recentemente aprendi a instalar o PHP e utilizá-lo via FastCGI (ao invés de mod_php, o que neste caso parecia impossível (considerando as múltiplas versões do PHP e o desejo de usar o MPM) Trabalhador sobre MPM Prefork)).

Eu entendi que poderia haver preocupações em relação ao XCache e ao APC, ou seja, problemas de segurança que não são thread, onde os dados são corrompidos e a capacidade de usar o MPM Worker se torna nula e sem efeito. Esta é uma preocupação válida?

Eu tenho usado o meu servidor pessoal de testes (rodando o Ubuntu Server Edition 10.04 no VirtualBox) que tem 2GB de RAM disponível para ele.

Aqui está a configuração usada (o servidor real provavelmente usará uma configuração mais adequada aos seus propósitos):

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)

Trabalhador:

<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/
    
por Adrian 22.05.2010 / 16:43

2 respostas

2

A única coisa que você deve se perguntar é: você está realmente esperando muito tráfego em seu site para garantir uma configuração tão complicada e arriscada (em oposição ao "regular" prefork + php como um módulo).

Eu tenho executado um par de sites pesados php chegando a 10m + acessos / dia sem ter a necessidade de mudar para o modelo encadeado. O PHP por si só é uma bagunça, fazendo com que ele pule através de aros está pedindo por isso.

    
por 22.05.2010 / 17:26
4

Eu não posso concordar com as respostas acima. Não tem nada a ver com quanto tráfego você espera, mas quanto tráfego alguém pode criar. A menos que você goste de ter um serviço que qualquer canalha pode encerrar ao seu capricho, você deve projetá-lo para tolerar mais carga do que um canalha comum pode criar.

    
por 12.06.2010 / 11:49