Script Apache para instalação com pouca memória

1

Eu tenho trabalhado em melhorar o uso de memória em nosso Centos 5.5 VDS, que agora tem 512 MB de RAM. Eu pude usar um script de otimização para melhorar muito a configuração do MySQL, mas estou tendo um pouco mais de dificuldade em diminuir o uso de memória do Apache. Parte do meu problema é o aconselhamento conflitante em vários sites, fóruns, etc. Sendo um servidor de produção, o ciclo normal de modificação e teste que eu empregaria em uma máquina de teste seria um pouco perturbador.

Para aumentar minha confusão, eu tenho uma máquina de desenvolvimento configurada o mais perto que eu posso fazer para ser um clone do VDS e usa menos RAM com exatamente a mesma configuração do Apache. Embora seja obviamente difícil aplicar a mesma carga, fico muito perto quando comparo os dois durante os horários mais silenciosos do dia ou da noite.

Existe um script de ajuste para o Apache, como aqueles disponíveis para o MySQL, que podem ajudar a otimizar a configuração analisando o que está acontecendo enquanto o servidor está rodando?

Editar:

Ou não tenho certeza ou as pessoas não estão lendo a pergunta, então vou esclarecer.

Não estou pedindo a ninguém aqui para fazer recomendações ou sugerir alternativas. Estou perguntando se alguém aqui sabe de um script que pode analisar o que está acontecendo no servidor e fazer recomendações sobre a configuração do Apache com base nessas informações.

    
por John Gardeniers 02.11.2011 / 11:05

2 respostas

1

Eu não conheço nenhum script desse tipo para o Apache, provavelmente porque, comparado ao MySQL, existem apenas algumas coisas que afetam o uso de memória do Apache:

  1. MaxClients: quanto mais clientes, mais memória é usada.
  2. Mods: Da mesma forma, quanto mais mods / extensões instaladas, mais memória é necessária.
  3. Scripts dinâmicos: A execução de scripts dinâmicos, como o PHP, pode aumentar o uso da memória, dependendo das configurações do Apache. Por exemplo, digamos que você tenha 10 arquivos PHP pequenos e um raramente usado em memória grande / intensiva. Eventualmente, todos os clientes Apache irão executar este grande script PHP e usar mais memória.
  4. Tempo de Compilação: Eu não joguei muito com as configurações de tempo de compilação do Apache, mas não ficaria surpreso se houvesse alguma economia de memória a ser encontrada lá.

Algumas coisas específicas que você pode experimentar estão listadas abaixo. Tente medir o efeito e teste em sua plataforma de desenvolvimento primeiro, se possível, e / ou implemente quaisquer mudanças gradualmente no local de produção.

  1. Mantenha MaxClients o mais baixo possível. Em um site de baixo volume, você pode obter números com menos de 10. Você também pode manter outras configurações relacionadas como MaxSpareServers low.
  2. Compare os modos prefork vs worker do Apache para ver se há alguma diferença significativa no uso da memória.
  3. Elimine todos os mods / extensões que você não está realmente usando. Isso pode ser mais difícil do que parece, pois nem sempre é fácil determinar quais você está usando.
  4. Use um valor baixo (100-1000) para MaxRequestsPerChild se você estão usando scripts dinâmicos ou estão vendo as instâncias do Apache diminuindo o uso de memória ao longo do tempo. Isso impede que os scripts com muita memória ou com vazamento usem muita memória.
  5. Examine as otimizações de memória de tempo de compilação somente se você realmente precisar ou tiver muita experiência anterior compilando o Apache. Pessoalmente, eu procuraria servidores alternativos antes dessa etapa.
por 03.11.2011 / 18:24
0

Por que não olhar para um servidor web com pouca memória: NGINX? É aclamado por ter pouca utilização de memória e é recomendado para sites executados em um VPS.

De qualquer forma, 400 MB não é muito para um servidor web nos dias de hoje e você pode querer considerar a substituição da caixa! O Apache2 consome muita memória. Ele deve ser configurado e as opções de configuração são confusas.

Edite suas configurações do apache, geralmente em /etc/apache2/apache2.conf

Nas configurações de mpm_prefork_module, defina StartServers como 1, MinSpares como 1 ou 0 e MaxSpares como algo como 3. Por exemplo, 10 processos em execução sobrecarregarão um servidor de 512 MB (o mínimo padrão do Apache2 é de 256 MB, mas você pode ' Não faça nada com isso! Para uma pegada reduzida / pouco tráfego no servidor, você pode tentar algo assim:

<IfModule mpm_prefork_module>
     StartServers          2
     MinSpareServers       2
     MaxSpareServers       3
     MaxClients          150
     MaxRequestsPerChild   500
</IfModule>

Altere as configurações acima ao testar as cargas de tráfego para ver se as novas configurações podem lidar com isso.

Você pode ajustar o KeepAlive do Apache para um valor mais baixo (2 ~ 5 no meu caso), que pode esperar menos processos do servidor aguardando conexões de clientes ociosos que podem não solicitar mais conteúdo.

 KeepAlive On
 KeepAliveTimeout 2
 MaxKeepAliveRequests 80

Reduza o tempo que o servidor aguardará antes de falhar em uma solicitação:

 Timeout 45

Você também pode ler isto: link

Mas, novamente, essa configuração é para muito pouco tráfego e o NGINX pode fazer muito mais com o mesmo hardware ..

    
por 02.11.2011 / 11:15