Apache MPMs - Worker vs Prefork

12

Estou tentando descobrir qual é o melhor Apache MPM que posso instalar no meu VPS. Eu vi alguns benchmarks e o MPM Worker parece ter um desempenho melhor do que o do Prefork, mas por algum motivo todos parecem estar recomendando configurações do Prefork sobre o Worker for PHP.

Isso ocorre apenas porque algumas funções do PHP não são seguras para threads? Apenas setlocale() me vem à mente, mas usarei a mesma localidade em todas as instâncias, portanto, não acho que isso seja um problema. Meu VPS tem pouca memória e eu sinto que o MPM worker seria melhor para minhas necessidades, mas não tenho certeza.

Alguém pode me ajudar a decidir sobre isso? Obrigado!

PS: também examinei o nginx e o lighttpd. O nginx parece incrível, mas estou tentando evitar a compilação a partir do código-fonte e ainda não entendi bem o que é o php-fpm. Em relação ao lighttpd - foi incrivelmente fácil configurar o PHP / FCGI com ele, mas ouvi dizer que ele tem vazamentos de memória. Isso ainda é verdade?

    
por Alix Axel 05.02.2011 / 19:00

1 resposta

10

Você deve usar o prefork ao usar o apache + mod_php. O FAQ descreve claramente o motivo:

link

Why shouldn't I use Apache2 with a threaded MPM in a production environment?

PHP is glue. It is the glue used to build cool web applications by sticking dozens of 3rd-party libraries together and making it all appear as one coherent entity through an intuitive and easy to learn language interface. The flexibility and power of PHP relies on the stability and robustness of the underlying platform. It needs a working OS, a working web server and working 3rd-party libraries to glue together. When any of these stop working PHP needs ways to identify the problems and fix them quickly. When you make the underlying framework more complex by not having completely separate execution threads, completely separate memory segments and a strong sandbox for each request to play in, further weaknesses are introduced into PHP's system.

nginx + php-fpm também é uma excelente maneira de executar aplicativos php. O nginx tem suporte nativo para o FastCGI e o php-fpm é uma das melhores maneiras de executar o php em um ambiente FastCGI. Veja a documentação do php aqui:

link

    
por 05.02.2011 / 21:57