Apachev8 em um Fusquina 67

Apachev8 em um Fusquina 67

Palestra sobre tuning em Apache.

C091e4c500d0da8ab9d61d5193ca2ba7?s=128

Diogo Leal

June 25, 2010
Tweet

Transcript

  1. Apache V8 em um Fusquinha 67 Diogo Leal [estranho] diogo@diogoleal.com

  2. Quem? Nome: Diogo Leal [estranho] Rio de Janeiro – RJ

    Sysadmin da HostGator Brasil Usuário Linux desde 1998 Grupo de usuários Slackware e Arduinrio slackwarebrasil.org arduinrio.cc
  3. Aonde? HostGator Fundada em 2002. Uma das cinco maiores empresas

    de hospedagem no mundo; ~8000 Servidores; ~300 funcionários; ~4 milhões de domínios; Escritórios: Estados Unidos e Brasil
  4. Não perca o foco O usuário quer acessar um site

    leve, design bonito com bom conteúdo e prático.
  5. Tópicos “Mexendo no capô" ou Otimizando o site para o

    cliente. "Tunando o motor" ou Ajustando o Apache no Servidor.
  6. Apache surgiu em 1995 à partir de uma série de

    "patches" sobre o NCSA; e daí a origem de seu nome: "A patchy server". O HTTPD Apache é um dos inumeros projetos da Apache Software Foundation (ASF). Instalado em mais de 10 milhões de servidores. Cerca de 60% dos servidores Web. O Apache
  7. http://news.netcraft.com/

  8. Metodologia • Compare a velocidade do seu site com o

    do concorrente; • Faça as comparações com os que estão na mesma região que o seu; • Quando necessário, limpe o cache do browser; • Use um link com uma velocidade comum de internet;
  9. Metodologia Seja metódico e lembre que quase nada é feito

    da noite para o dia. • Faça o teste; • Anote o resultado; • Faça a alteração; • Teste novamente.
  10. Metodologia No máximo, altere 2 itens e realize o ciclo

    de testes. Altere o sistema operacional, depois de finalizado o primeiro, siga para o Apache, em seguida, DNS, Banco de Dados, etc.
  11. Seja limpinho Você realmente precisa do Xorg, cups, samba em

    um servidor web? Se possivel e/ou necessário, divida os serviço para cada servidor. Faça nota das alterações que você realizou para que outros no futuro possam entender a alteração e melhorar.
  12. Kernel Kernel padrão das distribuições são compilados para utilizar qualquer

    tipo de hardware. Pense na possibilidade de recompilar o kernel com apenas o que é util para você.
  13. Alguns ajustes do Kernel Sysctl? Ok? fs.file-max=262144 4096 MB de

    RAM => 4096/4=1024 1024*256=262144 vm.min_free_kbytes = 204800 vm.lower_zone_protection = 1024 vm.page-cluster = 20 vm.swappiness = 200 vm.vm_vfs_scan_ratio = 2
  14. Disco Sistema de arquivos: XFS, ext3 ou ext4 Algumas distros

    são conservadoras em relação a configuração de disco. Analisar e realizar os ajustes com uma ferramenta como o sdparm é uma boa solução. Tenha pelo menos 25% livre em cada partição.
  15. Modificação da instalação padrão Apache Remova os módulos do Apache

    que você não utiliza para salvar um pouco de memória; Distribuições como Centos, o apache vem habilitado com 52 módulos, no Slackware o número aumenta para 64. É necessário isso tudo?
  16. Quanto menor for a quantidade de requisições, menor será a

    utilização do servidor.
  17. Opções do httpd.conf EnableSendfile On EnableMmap On HostNameLookups off Nas

    opções Allow e Deny utilizar ips ao invés de DNS
  18. Opções do httpd.conf Options FollowSymLinks #Options SymLinksIfOwnerMatch

  19. .htaccess Ao acessar site.com/casa/condado/meudocelar.html que esta com o DocumentRoot definido

    para /var/www/site/bilbo/, a busca será realizada nos seguintes diretórios: /.htaccess /var/.htaccess /var/var/.htaccess /var/var/site/.htaccess /var/var/site/bilbo/.htaccess /var/var/site/bilbo/casa/.htaccess /var/var/site/bilbo/casa/condado/.htaccess
  20. .htaccess Desativando o .htaccess AllowOverride All -> AllowOverride none Habilitando

    para somente o diretório desejado <directory /var/www/site/bilbo> AllowOverrride All </directory>
  21. Realizando cache no cliente Imagina um site que possui um

    total de 615kb com 46 imagens. Quando este site é acessado pela primeira vez é realizado um total de 62 requisições ao servidor. Imagine 300 acessos simultâneos em um período de 5 minutos?
  22. mod_deflate Comprime os arquivos de forma “automática”, diminuindo o tamanho

    das páginas que são enviadas ao cliente. Aumenta bem pouco o processamento no servidor, mas como as páginas estão com tamanho menor, diminui a quantidade de requisições ao servidor. Compactar arquivos de imagens e pdfs? Tá maluco mermão?
  23. mod_deflate LoadModule deflate_module modules/mod_deflate.so <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/plain text/html

    text/xml \ text/css application/javascript DeflateCompressionLevel 9 </IfModule>
  24. Cabeçalho Expires O browser salva uma cópia do arquivo no

    cache local do cliente e só atualiza, quando expira “a validade” do arquivo. ExpiresActive On <FilesMatch "\. (gif|jpg|js|css)$"> ExpireDefault "access plus 1 years" </FileMatch>
  25. ETags Foi criado para implementar um mecanismo mais flexível para

    validar entidades do que a data de última modificação.
  26. ETags São tipicamentes construídas usando atributos que as tornam únicas

    para um servidor especifico. Para quem hospeda o site somente em um servidor, a performance não é afetada.
  27. ETags Para desativar Etags (caso deseja) <IfModule mod_headers.c> Header unset

    ETag </IfModule> FileETag None
  28. Keep alive Keep Alive -> Permite que múltiplas conexões sejam

    realizadas através de uma única conexão. MaxKeepAliveRequests -> Indica quantas requisições keepalive devem ser permitidas através de uma mesma conexão. KeepAliveTimeout -> quanto tempo uma determinada conexão sera mantida aberta após não serem recebidas mais requisições.
  29. Prefork X Worker Prefork utiliza processos e mais memória, sendo

    mais seguro. Worker utiliza threads e menos memória.
  30. Prefork Quantidade de memória / Tamanho do processo = MaxClients

    <IfModule prefork.c> StartServers 15 MinSpareServers 15 MaxSpareServers 15 ServerLimit 256/Max MaxClients 256 MaxRequestsPerChild 4000 </IfModule>
  31. Worker <IfModule worker.c> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads

    75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule>
  32. Definir utilização CPU e Processos RLimitCPU 150 170 RLimitNPROC 25

    40 RLimitMEM 500000000 611000000
  33. CGI mod_fcgid O mod_fcgid é uma alternativa de maior velocidade

    ao mod_cgi e mod_cgid e até o mod_php.
  34. Cache do servidor Evite que uma página seja gerada a

    cada acesso. O Apache permite que você utilize duas formas de cache: Memória e Disco
  35. mod_mem_cache <IfModule mod_mem_cache.c> CacheEnable mem / MCacheSize 4096 MCacheMaxObjectCount 100

    MCacheMinObjectSize 1 MCacheMaxObjectSize 2048 </IfModule>
  36. mod_disk_cache CacheEnable disk / CacheRoot /var/www/cache CacheDefaultExpire 3600 CacheMinExpire 3600

  37. Gerenciando o cache htcacheclean é usado para manter o tamanho

    do cache no limite desejado. htcacheclean -d -n -t -p /diretorio/cache -l 10M -i
  38. Cache de páginas "dinâmicas” CacheEnable disk / CacheRoot /var/www/cache CacheIgnoreCacheControl

    On CacheDefaultExpire 600
  39. Memcached Desenvolvido inicialmente para o livejornal.com Utilizado para acelerar aplicações

    web dinâmicas. Realizando um cache de dados para aliviar a sobrecarga no banco de dados.
  40. mod_limitipconn Módulo que permite limitar um número máximo de conexões

    simultaneas por endereço IP. http://dominia.org/djao/limitipconn2.html
  41. mod_cband Módulos simples para limitar o uso de banda de

    usuários, virtual hosts e destinatários. Este módulo pode limitar a velocidade de download e a quantidade de requisições. http://codee.pl/cband_documentation.html
  42. mod_cband LoadModule cband_module modules/mod_cband.so <VirtualHost *:80> ... CBandSpeed 1024 10

    30 CBandRemoteSpeed 10kb/s 3 2 CBandClassRemoteSpeed googlebot_class 20kb/s 2 3 </VirtualHost>
  43. mod_cband <Location /cband-status> SetHandler cband-status </Location> <Location /cband-status-me> SetHandler cband-status-me

    </Location>
  44. Proxy Em grandes estruturas é comum possuir servidores Apache atuando

    como Proxys. Eles realizam o redirecionamento da requisição para outro servidor.
  45. Proxy server ProxyPass /site/ destino ProxyPassReverse /site/ destino

  46. mod_proxy_balancer Realiza o balanceamento de carga entre vários servidores backend.

    <Proxy balancer://balanco> BalancerMember http://ip:porta BalancerMember http://ip:porta </Proxy> ProxyPass /site balancer://balanco
  47. Apache Traffic Server Apache Traffic Server é um rápido, escalável

    e extensível servidor proxy cache. Desenvolvido pelo Yahoo!, foi doado para a Apache Foundation. http://trafficserver.apache.org/
  48. Proxy Reverso

  49. Cache Hierárquico

  50. Content Delivery Networks É um transparente proxy cache, que incrementa

    velocidade, segurança e estabilidade ao seu site. Web → CDN → Site
  51. AB - ApacheBench Ferramenta simples para analise de performance diogo@bree%

    ab -v -q -c 100 -n 1000 \ http://mordor.diogoleal.com/index.html
  52. Ferramentas time wget ­S ­O /dev/null http://site flood => httpd.apache.org/test

    Httperf => http://sf.net/projects/httperf/ curl-loader => http://curl-loader.sf.net Apachetop => http://freshmeat.net/projects/apachetop
  53. Plugins para Firefox • Speed page • Firebug • Yslow

  54. Monitorando o site em tempo real mod_status Permite visualizar informações

    simples, mas em tempo real das atividades do site. LoadModule status_module modules/mod_status.so <Location /server-status> SetHandler server-status Order allow,deny Allow from all </Location> ExtendedStatus On
  55. Dicas Não precisa ser programador, mas aprenda a ler e

    entender códigos que programadores @#$%&! escrevem. Desabilitar quando necessário bots de buscas como google e Yahoo!. Incluir captcha em formulários ajuda a diminuir a quantidade de requisições simultaneas. Separar conteúdo dinamico e conteúdo estático.
  56. O importante é ser feliz Caso o Apache não satisfaça

    as suas necessidades: • Cherokee • ngnix • lighthttpd • Khttpd Eu ouvi alguém falar em IIS?
  57. Dúvidas ?

  58. This work is licensed under the Creative Commons Attribution 3.0

    Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.