Apache Performance Tuning

  • 447 views
Uploaded on

Dicas e truques para melhorar a performance do Apache com pequenas configurações que podem fazer uma grande diferença.

Dicas e truques para melhorar a performance do Apache com pequenas configurações que podem fazer uma grande diferença.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
447
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
15
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Apache Performance Tuning 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 1
  • 2. Agenda ● Warning ● Configuração básica ● Persistent connections RAM ● .htaccess Módulos padrão ● SymLinks ● mod_mem_cache ● ● mod_disk_cache ● Logs ● ● 21.fev.2014 Carregar javascripts depois da página Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 2
  • 3. Warning "Premature optimization is the root of all evil." Donald Knuth 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 3
  • 4. Configuração básica ● ● ● A configuração padrão do Apache é bem versátil Usando servidores standard, o Apache pode atender a alguns milhares de conexões por dia sem otimizações Essa configuração pode ser melhorada ampliando ou reduzindo os recursos disponíveis por meio de seus módulos 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 4
  • 5. Otimização ● Como medir a performance do Apache? – – httperf – ● Apache HTTP server bench marking tool The Grinder, a Java Load Testing Framework Não há outra forma de medir essa performance? – 21.fev.2014 A mais importante métrica que pode ser verificada é a percepção do usuário Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 5
  • 6. Otimização ● 21.fev.2014 Por onde começar? Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 6
  • 7. RAM ● Siga aquele ditado que diz: Quanto mais, melhor! ● ● ● Se possível tenha o máximo de memória que o servidor, o sistema operacional e seu bolso permitirem Mais memória permite um maior número de processos ou threads Maior número de requests simultâneos 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 7
  • 8. Módulos padrão ● ● ● A carga de módulos usa mais memória e ativa sequências de verificação adicionais Inclui rotinas a serem executadas em todas as chamadas Vários módulos que vêm configurados por padrão só são usados em casos específicos 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 8
  • 9. Módulos padrão ● Desative módulos desnecessários ● Alguns módulos para verificar se você precisa deles: – authn_alias_module – authn_anon_module – authn_dbm_module – authnz_ldap_module – authz_dbm_module – authz_owner_module – ext_filter_module – file_cache_module – info_module – ldap_module – mem_cache_module – status_module – speling_module – usertrack_module – proxy_module – proxy_balancer_module – proxy_ftp_module – proxy_http_module – proxy_ajp_module – proxy_connect_module 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 9
  • 10. Módulos padrão ● ● O principal objetivo em desativar módulos não é liberar memória mas sim reduzir o número de rotinas executadas em cada request A redução no consumo de memória acontece como um bônus 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 10
  • 11. mod_mem_cache ● ● É útil para criar cache de conteúdo gerado localmente ou quando o apache atua como um proxy reverso Este módulo cria um cache independente por processo – não compartilhável entre processos 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 11
  • 12. mod_disk_cache ● ● ● Também é usado para criar cache de conteúdo gerado localmente ou quando o apache atua como um proxy reverso O cache é criado em uma pasta especificada e pode ser acessado por todos os processos/ threads do apache Ao usar mod_disk_cache configure um disco separado, de alta performance – SSD se possível – , como cache 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 12
  • 13. mod_disk_cache ● ● ● ● Quantidade de pastas para cache pode ser configurada com CacheDirLength e CacheDirLevels Cuidado com CacheDirLength para não criar poucas pastas ou uma quantidade muito grande Prefira uma estrutura com CacheDirLevels=1 para reduzir o tempo de limpeza do cache Execute o daemon htcacheclean para evitar o acumulo desnecessário de arquivos sem uso 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 13
  • 14. mod_disk_cache ● Como configurar mod_disk_cache LoadModule disk_cache_module modules/mod_disk_cache.so <IfModule mod_cache.c> <IfModule mod_disk_cache.c> CacheEnable disk / CacheIgnoreHeaders Set-Cookie CacheRoot "/var/cache/httpd_cache" CacheDirLength 2 CacheDirLevels 1 </IfModule> <IfModule> ● Habilitar o daemon htcacheclean htcacheclean -d30 -n -t -p /var/cache/httpd_cache -l 512M 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 14
  • 15. mod_disk_cache ● Como saber se a página foi servida a partir do cache ou processada? LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" "%{Age}o"" combined 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 15
  • 16. Logs ● ● ● ● Uso intensivo de I/O Deve usar um disco separado do disco do conteúdo do apache Preferencialmente discos SAS – não precisa ser SSD Considere o uso do log do sistema 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 16
  • 17. Persistent connections ● Vantagens – – ● É mais eficiente manter uma conexão ativa para enviar um segundo arquivo Atender a mais de um request por conexão Desvantagens – Pode prejudicar em sites onde só há solicitações de um único arquivo – Mantém uma conexão ativa por mais tempo 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 17
  • 18. Persistent connections ● Opções de configuração LoadModule headers_module modules/mod_headers.so KeepAlive on MaxKeepAliveRequests 100 KeepAliveTimeout 15 <ifModule mod_headers.c> Header set Connection keep-alive </ifModule> 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 18
  • 19. .htaccess ● ● Usado para tornar mais flexível a configuração de sites no Apache Deve ser habilitado no httpd.conf pela tag AllowOverride ● A tag AllowOverRide força o Apache a fazer varreduras em todas as pastas a partir de / à procura de arquivos .htaccess 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 19
  • 20. .htaccess ● Com esta configuração DocumentRoot /var/www/html <Directory /> AllowOverride all </Directory> ● Ao acessar este site, o Apache é forçado a procurar por .htaccess em: /.htaccess /var/.htaccess /var/www/.htaccess /var/www/html/.htaccess 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 20
  • 21. SymLinks ● Há duas opções para permitir o uso de links simbólicos FollowSymLinks SymLinksIfOwnerMatch ● A segunda opção é mais segura porém, do ponto de vista de performance, é extremamente onerosa. 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 21
  • 22. SymLinks ● Com esta configuração DocumentRoot /vaw/www/html <Directory /> Options SymLinksIfOwnerMatch </Directory> ● Ao acessar este site, o Apache é forçado a executar uma função lstat() em: /var /var/www /var/www/html /var/www/html/index.html 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 22
  • 23. Para os desenvolvedores 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 23
  • 24. Carregar js depois da página ● ● ● ● Não use async, defer ou posicione os scripts no final da página: isso não funciona Javascripts que não estão envolvidos na exibição inicial da página só devem ser carregados depois da página completa Coloque em um arquivo separado, scripts que monitoram clicks, posição de mouse e coisas assim Use o código mostrado a seguir ao final da sua página, antes da tag </body> 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 24
  • 25. Carregar js depois da página ● Exemplo prático <script type="text/javascript"> function downloadJSAtOnload() { var element = document.createElement("script"); element.src = "scripts.js"; document.body.appendChild(element); } if (window.addEventListener) window.addEventListener("load", downloadJSAtOnload, false); else if (window.attachEvent) window.attachEvent("onload", downloadJSAtOnload); else window.onload = downloadJSAtOnload; </script> 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 25
  • 26. Outras otimizações ● Apache Extended Status ● Swapiness ● Buffer Size ● Max Open Files ● PHP Safe Mode ● etc... 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 26
  • 27. Perguntas? 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 27
  • 28. Muito Obrigado Marcos Sungaila marcos@savant.com.br 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 28