[MASOCH-L] Apache 2 MPM: prefork vs worker

Lao DanTong danton at inexo.com.br
Wed Mar 30 10:52:55 BRT 2005


On Wed, 30 Mar 2005, Marcelo Coelho wrote:

> O benchmark que fiz demonstrou que o prefork é mais rápido, porém como este
> modo inicia um processo httpd para cada conexão, isso deve carregar o
> sistema de acordo com o número de acessos simultâneos. O consumo de memória
> de cada processo não é pequeno, ainda mais quando o httpd carrega módulos
> DSO, por exemplo o mod_php4.

bem, a coisa não é bem assin nos unixen modernos, que usam um truque 
chamado 'copy on write', que faz o fork não só ser rápido como não copiar 
realmente todo o espaço de memória do processo, só o que vier a ser 
modificado. o Linux faz isso desde há muito tempo, não sei quanto ao 
FreeBSD, mas a idéia é tão boa que eles não iam deixar de adotar.

> Já o worker, por utilizar threads, compartilha recursos e o consumo de
> memória é bem menor. Em contra partida, todos os módulos precisam ser
> compilados como thread safe (não vejo isso como um problema), mas a
> documentação do Apache alerta de que todos os módulos utilizados precisam
> ser thread-safe, inclusive módulos do PHP/Zend.

pois é, no linux threads e processos não tem grande diferença de 
performance. os módulos do PHP/Zend devem ser thread safe, eles rodam no 
windows, não? o que a turma levanta a lebre é quanto às várias bibliotecas 
das quais o PHP é só um front-end, p.ex. libmysqlclient, ou libpng, mas 
acho que é muita farofa para pouco churrasco, o mais provável é que 
funcione sem problema.

> A questão é: o que vale mais a pena? Ter a velocidade já comprovada pelo
> prefork, mesmo com o alto consumo de recursos do sistema, ou utilizar o
> worker, que possui performance inferior, mas que teoricamente poupará
> recursos do sistema?

acho que teu benchmark respondeu: no Linux certamente prefork. no FreeBSD 
precisa ver a estratégia dele no que toca à criação e cópia de espaço de 
processos, se usar 'copy-on-write' prefork nele também. no windows é 
melhor desinstalar e usar um dos dois já citados ;-)


More information about the masoch-l mailing list