Apache Tuning - ( melhorando a performance do Apache ) ============================================= O segredo para o bom funcionamento de um Apache Web Server é sua customização de acordo com os recursos de hardware disponíveis. Neste documento...

Apache Tuning - ( melhorando a performance do Apache ) ============================================= O segredo para o bom funcionamento de um Apache Web Server é sua customização de acordo com os recursos de hardware disponíveis. Neste documento vamos fazer um abordagem rápida sobre estas customizações com um exemplo prático de como fazer isto. - Hardware utilizado para o teste Intel Celerom 2.2 Ghz single core 2 GB RAM HDD 250 GB - Sistema Operacional CentOS 5 Kernel 2.6.18 - Recursos de hardware - RAM Um dos fatores que afetam  a performance de um servidor Apache é a memória RAM. O Apache aloca e usa recursos da memória RAM para disponibilizar os resultados das requisições HTTP feitas pelos usuários, e quanto maior a quantidade de requisições, mais recursos você irá precisar para ter seu servidor Apache saudavél. Exemplo digamos que você tenha um portal que tenha em média 10.000 pageviews /dia com um banco de dados MySQL no qual o arquivo que indexa o conteúdo é um script PHP que faz em média 30 Querys. Para isso você irá precisar de uma máquina com as seguintes configurações: Intel Xeon 3.2 Ghz ( single core / melhor se for uma máquina com dois núcleos ) 4 GB RAM HDD ( a quantidade de espaço em disco neste caso não deverá ser levada em consideração e sim a velocidade de acesso deste HDD ) Exemplo real: Um site que é parceiro do portal UOL possui um site que toda vez que o site cai na Home do UOL há um pico muito grande de acessos no qual o servidor não possuia os recursos necessários para segurar os acessos, resultado ? Server Down, Freeze... crash. Solução ?? Aumentar a quantidade de memória para 8 GB e trocar o processador de um single Xeon para um Dual Xeon Dual Core. Falando no geral, o I/O de disco vêm em segundo lugar após do trio RAM/CPU/Network link. Configurando o prefork Abaixo daremos um exemplo básico dos parâmetros do prefork
<IfModule prefork.c> StartServers            8 MinSpareServers         5 MaxSpareServers        20 MaxClients            150 MaxRequestsPerChild  1000 </IfModule> #<IfModule worker.c> #  StartServers            2 #  MaxClients            150 # MinSpareThreads        25 # MaxSpareThreads        75 #ThreadsPerChild        25 #MaxRequestsPerChild     0 #</IfModule> #<IfModule mpm_winnt.c> # ThreadsPerChild       250 # MaxRequestsPerChild     0 #</IfModule>
Como utilizaremos o prefork, podemos comentar o worker e o mpm_winnt ( este é utilizando para o Apache no Windows ) MaxClients O parâmetro MaxClients é o número máximo de conexões simultâneas no servidor Apache, esta diretiva é fundamental para o funcionamento do servidor Apache. Equação para o MaxClients
MaxClients = (RAM - tamanho_de_todos_outros_processos_do_servidor ) / ( tamanho_dos_processos_do_apache )
Para conseguir detectar estes processos utilize os comandos abaixo: ps -ylC httpd --sort:rss ( para encontrar  o tamanho dos processos. Divida o número por 1024 para verificar o valor em Megabytes ); free -m ( determina a quantidade de buffers/cache utilizados ) vmstat 2 5( mostra o número de processos rodando, blocados, aguardando processos, e entrada e saída da área de swap ). Nossos exemplo para nossos servidor:
<IfModule prefork.c> StartServers            8 MinSpareServers         5 MaxSpareServers        20 MaxClients            450 MaxRequestsPerChild  1000 </IfModule> KeepAlive off KeepAliveTimeout 15 MaxKeepAliveRequests 80 Timeout 45
*Quando utilizar o prefork é recomendado desabilitar o KeepAlive, Referência : http://www.devside.net/articles/apache-performance-tuning Outros referências: http://blogcritics.org/archives/2006/01/27/1757402.php
Seja Membro Gratuítamente

Assine a newsletter para receber em seu email as publicações atualizadas neste blog

Top