Muitas pessoas usam o Apache2 como servidor web. Porém, poucas pessoas pensam em otimizar seu desempenho, o que afeta diretamente proporcionalmente a velocidade de carregamento das páginas do site, a velocidade de processamento de scripts (em particular php), bem como o aumento da carga da CPU e o aumento da quantidade de RAM utilizada.
Assim, o manual a seguir deve ajudar usuários iniciantes (e não apenas).
Todos os exemplos abaixo foram usados em Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.
Итак, начнем.
1. Desativando módulos não utilizados
O primeiro método é simplesmente desabilitar os módulos que você não usa:
A lista de módulos usados atualmente pode ser visualizada com o comando:
apache2ctl -M
Para desabilitar o módulo, use o comando:
a2dismod *название модуля*
Assim, para habilitar o módulo, use o comando:
a2enmod *название модуля*
Observe que ao usar a2dismod, o nome do módulo deve ser escrito sem a palavra módulo em si.
Por exemplo, se você estiver na saída do comando apache2ctl-M serra módulo_proxy, então para desativá-lo você precisa usar o comando - proxy a2dismod
Os módulos que mais carregam o sistema (por experiência pessoal) são:
- PHP, Ruby, Perl e outros módulos para diversas linguagens de script
- SSL
- Reescrever
- CGI
Portanto, nos casos em que você não precisa desses módulos, recomendo desabilitar esses módulos.
Além disso, após desabilitar qualquer módulo, recomendo usar o comando - teste de configuração apache2ctl, que irá verificar a configuração dos sites utilizados e se algum dos módulos desabilitados for necessário para eles, irá gerar um erro.
2. Alterando MPM (Módulo Multi-Processamento) e usando php-fpm
Por padrão, após a instalação, o Apache2 usa MPM Prefork (1 thread por 1 conexão), o que reduz significativamente o desempenho, mas ao mesmo tempo melhora a estabilidade e a segurança.
Mas para otimizar o desempenho, recomendo usar o MPM Worker, que permite usar vários threads por conexão.
Para habilitá-lo usamos os seguintes comandos:
a2dismod mpm_prefork //Отключаем prefork
a2dismod php7.3 //Отключаем модуль php, который зависит от prefork
a2enmod mpm_worker //Включаем worker
No entanto, ao usar o Worker você pode encontrar um problema porque... 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 executar scripts PHP:
apt-get update && apt-get install php7.3-fpm //Устанавливаем
systemctl enable php7.3-fpm && systemctl start php7.3-fpm //Добавляем в автозагрузку и запускаем
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf //Включаем модуль и конфиг для него
É importante notar que o uso do php-fpm também reduzirá a quantidade de RAM usada pelo processo Apache2 e acelerará um pouco o processamento de scripts PHP.
3. Conclusão
Assim, com ações tão simples conseguimos otimizar o desempenho e reduzir a carga da máquina (neste caso RPI3).
Claro, existem centenas de outras opções de otimização, como habilitar a compactação (que é muito útil, mas a maioria já está habilitada por padrão), alterar as configurações do MPM (arquivos de configuração), desabilitar HostnameLookups, etc., mas neste artigo tentei refletir Esses são os pontos que mais me ajudaram e espero que ajudem outras pessoas.
Fonte: habr.com