Eu tenho um aplicativo PHP que faz uso intensivo de banco de dados e pode ser executado por muitas horas, processando e fazendo milhares de conexões de rede externas.
Menos de 3 usuários estarão conectados a este aplicativo a qualquer momento.
Qual apache mpm é mais adequado para esta carga de trabalho, prefork/mod_php ou trabalhador/mod_fcgid?
Estou usando Debian Lenny x64, núcleo único, 4 GB de RAM.
Responder1
Para máquinas mais lentas, o modo de trabalho funciona melhor e gera menor uso e carga da CPU.
Para máquinas poderosas que atendem conteúdo estático, o prefork mpm é cerca de 5% mais rápido.
Recomendo se você tiver a oportunidade de fazer alguns testes com benchmark apache:Referência Apache
Além disso, você pode dar uma olhada neste benchmark:Pré-fork Apache vs. trabalhador
Seu mecanismo de banco de dados está instalado no mesmo servidor?
Responder2
O Apache possui dois módulos MPM que são amplamente utilizados - o Worker MPM e o Pre-fork MPM. PHP.net recomenda que você use o Pre-fork MPM, enquanto a maioria dos especialistas em otimização de sites pressiona você a utilizar o Worker MPM encadeado. Surpreendentemente, o teste de carga mostrou uma diferença de desempenho relativamente pequena - e certamente não uma diferença que o levaria a uma implementação não recomendada em seu servidor.
Responder3
Worker + PHP através do FastCGI tendem a funcionar bem, historicamente muitas pessoas desaconselharam o uso do mod_php com qualquer MPM encadeado (por causa de algumas bibliotecas de terceiros que não estavam funcionando muito bem com isso), o uso do FastCGI basicamente "desconecta" o PHP do servidor web , evitando esse problema.
Outra vantagem é que agora o tamanho do thread/processo do Apache é menor, então você pode usar mais threads/processos para o servidor web (servindo conteúdo estático) e ter poucos processos PHP executando partes dinâmicas do site.