Otimização de desempenho do apache2.

Muitos utilizam o apache2 como servidor web. No entanto, poucos pensam na otimização do seu desempenho, o que impacta diretamente na velocidade de carregamento das páginas do site, na velocidade de processamento dos scripts (especialmente PHP), assim como no aumento da carga da CPU e no consumo de RAM.

Assim, este manual deve ajudar iniciantes (e não só) usuários.
Todos os exemplos abaixo foram utilizados em um Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.

Então, vamos começar.

1. Desativação de módulos não utilizados

O primeiro método é simplesmente desativar módulos que você não utiliza:

A lista de módulos atualmente utilizados pode ser vista com o comando:

apache2ctl -M

Para desativar um módulo, usa-se o comando:

a2dismod *nome do módulo*

Consequentemente, para ativar um módulo, usa-se o comando:

a2enmod *nome do módulo*

Observe que, ao usar a2dismod, o nome do módulo deve ser escrito sem a palavra módulo.

Por exemplo, se você viu na saída do comando apache2ctl -M que proxy_module, para desativá-lo, deve-se usar o comando — a2dismod proxy

Os módulos que mais consomem o sistema (pela minha experiência pessoal) são:

  • PHP, Ruby, Perl e outros módulos para várias linguagens de script
  • SSL
  • Rewrite
  • CGI

Portanto, nos casos em que esses módulos não são necessários, eu recomendo desativá-los.

Além disso, após desativar qualquer módulo, eu recomendo usar o comando — apache2ctl configtest, que verifica a configuração dos sites utilizados e, caso algum dos módulos desativados seja necessário, emitirá um erro.

2. Mudança do MPM (Módulo de Processamento Múltiplo) e uso do php-fpm

Por padrão, após a instalação, o apache2 utiliza o MPM Prefork (1 thread por conexão), o que reduz consideravelmente o desempenho, mas melhora a estabilidade e segurança.

Mas para otimizar o desempenho, eu recomendo usar o MPM Worker, que permite usar várias threads em uma única conexão.

Para ativá-lo, usamos os seguintes comandos:

a2dismod mpm_prefork  \/\/Desativamos prefork
a2dismod php7.3  \/\/Desativamos o módulo php, que depende do prefork
a2enmod mpm_worker  \/\/Ativamos worker

No entanto, ao usar o Worker, você pode enfrentar um problema, pois o módulo php7.3 depende do módulo Prefork.

Para resolver este problema, vamos instalar o módulo php7.3-fpm, que será usado para processar scripts php:

apt-get update && apt-get install php7.3-fpm  // Instalando
systemctl enable php7.3-fpm && systemctl start php7.3-fpm  // Adicionando à inicialização automática e iniciando
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf  // Ativando o módulo e sua configuração

Vale a pena notar que o uso do php-fpm também reduzirá o uso de RAM pelo processo apache2 e acelerará um pouco a execução dos scripts php.

3. Conclusão

Dessa forma, com ações simples, conseguimos otimizar o desempenho e reduzir a carga na máquina (neste caso, RPI3).

Claro que existem centenas de outras opções de otimização, como ativar a compressão (o que é realmente útil, mas na maioria das vezes já está habilitado por padrão), alterar parâmetros (arquivos de configuração) do MPM, desabilitar HostnameLookups, etc., mas neste artigo procurei refletir exatamente os pontos que mais me ajudaram e espero que ajudem outros.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster