Não há nada de errado com o que você está vendo. PHP é um módulo sendo executado pelo Apache, que é controlado pelo usuário www-data
. O que você está vendo é um comportamento normal. E a maioria dos ajustes feitos para melhorar o desempenho estão conectados às configurações do Apache & não tanto as configurações do PHP.
Se você quiser controlar melhor esse comportamento, há dois lugares para fazer ajustes.
1. Ajuste o limite de memória do PHP: Abra o arquivo php.ini que deve estar localizado em /etc/php5/apache2/php.ini
e edite a opção
chamado memory_limit
. Deve ser definido para 64M ou 32M. Mas isso é
basicamente o limite máximo de memória para qualquer processo PHP - que está ligado a
cada processo do Apache2 (veja abaixo) - pode ser usado. Então, se você executar o WordPress &
quer rodar qualquer processo com 32M de RAM, não tem problema. Se precisar
mais o script falhará & seu log de erros do Apache2 localizado em
/var/log/apache2/error.log
preencherá com erros.
2. Ajuste seu Apache Config para atender às suas necessidades: Como o PHP é um módulo em execução no Apache, quanto mais processos do Apache você executar, mais memória será consumida. Se você tiver uma instalação padrão do Apache2, abra este arquivo & olhe em volta: /etc/apache2/apache2.conf
. Especificamente, aqui estão as configurações que eu sempre ajustei em uma instalação padrão.
-
Tempo limite: Esse é o tempo limite entre uma solicitação feita pelo cliente para o servidor & o servidor atendendo a essa solicitação. Na minha experiência, a configuração de 300 segundos (5 minutos) é muito alta. Eu ajustei isso para 120.
-
KeepAlive: Eu sempre mantenho isso, já que ajuda o Apache a usar a memória & melhores recursos. Isso basicamente significa que um processo filho do Apache não
se matar se um cliente ainda estiver solicitando conteúdo. Dessa forma, um
processo pode fluir dados & então morra com segurança depois de ter feito o seu trabalho.
-
MaxKeepAliveRequests: Isso está diretamente conectado a
KeepAlive
. E eu ajustei isso com base nas necessidades do servidor. Para desenvolvimento
ambientes eu mantenho isso baixo. Vamos dizer 3 ou 4. Para produção
ambientes que tendem a sentir KeepAlive
só é útil por cerca de 1/3
de conexões. Então eu defini isso para cerca de 24 ou 32. Mas a memória é um
preocupação, eu ficaria assim tão baixo quanto mais KeepAlive
processa você
ter mais clientes em execução e & mais RAM você
usado por processo.
-
KeepAliveTimeout: Essa é basicamente uma medida da rapidez com que uma pessoa pode carregar uma página em seu site. Pense nisso: por que manter uma conexão
vivo após o tempo que leva para um cliente obter o conteúdo para um
página? Na minha experiência, uma configuração de 2 segundos a 5 segundos é boa.
Mas quando se desloca até 5 segundos para renderizar uma página, isso significa que
algo está realmente sufocando o sistema subjacente. Então para mim isso é
um sinal para reavaliar o código & limpe a codificação intensiva de recursos.
Em seguida, vá para a área mpm_prefork_module
. É assim que eu configuro meu ambiente de desenvolvimento; isso é para um site de baixo tráfego.
<IfModule mpm_prefork_module>
StartServers 8
MinSpareServers 8
MaxSpareServers 8
ServerLimit 16
MaxClients 16
MaxRequestsPerChild 2000
</IfModule>
Basicamente, isso define todos os limites & parâmetros para uma instalação básica do Apache. Eu acredito que cada parâmetro deve ser auto-explicativo, mas aqui está o meu colapso.
-
StartServers: Quantos servidores filhos são iniciados imediatamente sob o Apache.
-
MinSpareServers: a quantidade mínima de servidores filhos a serem mantidos em reserva.
-
MaxSpareServers: a quantidade máxima de servidores filhos a serem mantidos em reserva.
-
ServerLimit: O limite máximo do número de servidores secundários existentes.
-
MaxClients: o valor máximo de clientes que podem existir a qualquer momento.
-
MaxRequestsPerChild: Essa configuração ajuda a eliminar processos filhos após um determinado número de solicitações. Isso ajuda a evitar vazamentos de memória porque os processos tecnicamente filhos podem ser executados permanentemente até a próxima reinicialização do Apache2. Uma proteção que eu gosto de ter no lugar para que eu possa dormir à noite, mesmo quando um desenvolvedor implanta código desleixado.
Espero que isso ajude!