Ir para conteúdo
  • Cadastre-se

[Tutorial] Tunando Seu Apache: Apache Can Fly!


joaopaulo

Posts Recomendados

[COMO SEMPRE...: SEM REVISÃO ORTOGRÁFICA]
 
Olá caros pedeagueiros,
 
Este é mais um tutorial da série "Of The God" para vocês. A novela começa da seguinte maneira: Apache levando o load do seu servidor as alturas. Uns aumentam o número de max_servers, start_servers e nada resolve (quando não piora), claro, esses números são extremamente válidos e devem ser mexidos sim, mas com sabedoria né gente.
 
1. Entendendo os MPM´s Prefork, Worker e Event:
 
É normal eu acessar servidores por aí e o MPM estar errado, aliás, não ser o mais adequado para a operação do servidor. Se você é do tipo que ao compilar o Apache com o easyApache deixa tudo como padrão e só meche em coisas do PHP, é melhor parar.... e ler esse tutorial com atenção, pois te mostrarei o maravilhoso caminho do principio do início da Hight Performance.
 
MPM Prefork: Resumindo: é um gerenciador não-paralelo que a partir de um único  processo pai, processa n processos filhos. Por ser um único processo pai, ele é compatível com várias bibliotecas do PHP3 e 4 que não suportam parametrização. Ele é usado em servidores pequenos, e com não mais que 2 núcleos. Você perde performance e capacidade de usuários conexões simultâneas ao utiliza-lo em servidores multi-cores com maior quantidade de RAM. Leia mais detalhes na documentação oficial.
 
MPM Worker: Esse gerenciador possui suporte a processos paralelos, que por sua vez vão gerar processos filhos, ou seja, é como se você tivesse vários irmãos, cada um criando "filhos". Ou seja, no final das contas serão muito mais eficientes no número de netos gerados para o avô do que só você tendo filhos. Esse módulo é o mais recomendado para qualquer servidor com dois núcleos ou mais e para médio-alto número de conexões simultâneas.
 
MPM Event: Esse é uma melhoria do Worker, que ao invés de matar o processo ao final da compilação, ele mantém-o aberto esperando por uma nova conexão, o que aumenta pacas a capacidade de conexões simultâneas. É o mais indicado para sites de leilão de 1 centavo e grandes blogs. Segue as mesmas recomendações de implementação sem servidores do Worker. Quando você perceber que seu servidor suporta o Worker, faça primeiramente um teste com o Event, se não houver problemas, mantenha o Event sempre que possível.
 
Agora que você sabe o MPM ideal para cada coisa, favor recompilar seu Apache.
 
 
2. ServerLimit, MaxClient, StartServers, StartThreads, etc...:
 
Gente, isso é fácil demais de entender, principalmente quando você sabe o que significa cada MPM, logo, vou apenas postar o link pra documentação oficial. Quem não lê inglês, favor por no google translate:

Espero que agora você tenha entendido a importânci do ServerLimit.
 
Se seu servidor ter mais que 4GB de RAM, é hora de rever se os números do Apache Configuration para as variáveis acima estão corretos. Experimente aumentar o número de StartServers, MaxClients, MaxSpareThreads. Garanto que você terá agradáveis surpresas nos horários de pico.

 

E acredito que nem preciso falar do Keep Alive! Sempre On gente, com 10s de tempo e 200 arquivos.
 
3. Módulos importantes para serem compilados:
 
Quando você avalia um site usando o PageSpeed e Yslow, eles pedem para você ativar expires headers, ativar a compressão, usar o etags, etc... Bom, sabemos que a maioria dos clientes sequer sabem que o expires pode aumentar significativamente a velocidade de carregamento do site, uma vez que ele "obriga" o browser a fazer cache. Sendo assim, que tal forçar o seu servidor a gerar o expires? 
 
Se seu servidor for parrudo, pode também obriga-lo a fazer a compressão gzip. E se não houver muitos sites, você pode fazer cache de estáticos com o Apache, que deixa as páginas simplesmente muiittto rápidas (não recomendado se você usa o NginxAdmin/CpNginx).
 
Vamos por a mão na massa:
 
3.1 Compilar o Apache usando o EasyApache com os módulos (Se você usa o Nginx, esqueça de tudo o que estou falando aqui, pois o NginxCP e NginxAdmin já fazem isto):
 
Deflate (apenas ative este se seu servidor não ter problemas de load ou se o link for demasiado pequeno).
Expires;
 
3.2 Após a compilação, acessar  o WHM e ir em "Home »Service Configuration »Apache Configuration »Include Editor". 
 
Role a página até a seção "Pre VirtualHost Include" e escolha "All Versions". Pode ser que como no servidor abaixo, já exista algo na caixa que vai aparecer, mantenha tudo o que já estiver lá.
 
 qlqZIxJ.png
 
Vamos então forçar dois módulos inicialmente, o Expires e Deflate (se for seu caso), logo, acrescente o código abaixo na caixa de texto "Global":

##FORCANDO O SERVIDOR A GERAR EXPIRES EM SITES SEM .HTACCESS
##SE HOUVER PROBLEMA COM O EXPIRES DO XML, basta remover a ultima linha
<IfModule mod_expires.c> 
	ExpiresDefault "access plus 5 minutes" 
        ExpiresByType image/x-icon "access plus 1 month"
	ExpiresByType text/html "access plus 10 minutes"
        ExpiresByType image/png "access plus 1 month"
        ExpiresByType image/jpg "access plus 1 month"
        ExpiresByType image/gif "access plus 1 month"
        ExpiresByType image/jpeg "access plus 1 month"
        ExpiresByType application/pdf "access plus 1 month"
        ExpiresByType audio/x-wav "access plus 1 month"
        ExpiresByType audio/mpeg "access plus 1 month"
        ExpiresByType video/mpeg "access plus 1 month"
        ExpiresByType video/mp4 "access plus 1 month"
        ExpiresByType video/quicktime "access plus 1 month"
        ExpiresByType video/x-ms-wmv "access plus 1 month"
        ExpiresByType application/x-shockwave-flash "access 1 month"
        ExpiresByType text/css "access plus 96 hour"
        ExpiresByType text/javascript "access plus 96 hour"
	ExpiresByType text/xml "access plus 96 hours" 
</IfModule> 

## FORCANDO O DEFLATE
## Se você não for usar, não acrescente as linhas abaixo
<IfModule mod_deflate.c>
	AddOutputFilterByType DEFLATE application/xhtml+xml
	AddOutputFilterByType DEFLATE application/xml
	AddOutputFilterByType DEFLATE image/svg+xml
	AddOutputFilterByType DEFLATE application/rss+xml
	AddOutputFilterByType DEFLATE application/atom_xml
	AddOutputFilterByType DEFLATE application/x-javascript
	AddOutputFilterByType DEFLATE application/javascript
	AddOutputFilterByType DEFLATE application/json
	AddOutputFilterByType DEFLATE text/html
	AddOutputFilterByType DEFLATE text/plain
	AddOutputFilterByType DEFLATE text/html
	AddOutputFilterByType DEFLATE text/xml
	AddOutputFilterByType DEFLATE text/css
</IfModule>


Lembrando que as configs acima, não alteram ou se sobrepõe ao .htacess dos sites do servidor. Isso só servirá para sites que não terem .htacess ou regras para essas duas situações.

 

 

João, okay, tive paciência de te dar audiência, mas como saberei se está realmente funcionando? Primeiro escolha alguns sites sem .htaccess.

 

Depois abra-os no Chrome/IE/Mozilla, e clique em qualquer ponto de uma página e ir na Inspeção de Elementos >> Network: recarregue e veja o status do carregamento dos arquivos:

 

 

P4QjMnF.png

 

CZb9gA8.png

 

E a compressão Gzip?

 

Teste com este site: http://www.whatsmyip.org/http-compression-test/

 

 

É isso gente. Outra hora vou discutir com vocês o disk_cache e Mem_cache.

 

 

Sucessos pra vocês!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Concorda com os nossos termos?