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 -MPara 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
