Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Apachev8 em um Fusquina 67

Apachev8 em um Fusquina 67

Palestra sobre tuning em Apache.

Diogo Leal

June 25, 2010
Tweet

More Decks by Diogo Leal

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. Não perca o foco O usuário quer acessar um site

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

    cliente. "Tunando o motor" ou Ajustando o Apache no Servidor.
  5. 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
  6. 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;
  7. 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.
  8. 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.
  9. 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.
  10. 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ê.
  11. 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
  12. 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.
  13. 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?
  14. Opções do httpd.conf EnableSendfile On EnableMmap On HostNameLookups off Nas

    opções Allow e Deny utilizar ips ao invés de DNS
  15. .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
  16. .htaccess Desativando o .htaccess AllowOverride All -> AllowOverride none Habilitando

    para somente o diretório desejado <directory /var/www/site/bilbo> AllowOverrride All </directory>
  17. 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?
  18. 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?
  19. 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>
  20. ETags Foi criado para implementar um mecanismo mais flexível para

    validar entidades do que a data de última modificação.
  21. 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.
  22. 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.
  23. Prefork X Worker Prefork utiliza processos e mais memória, sendo

    mais seguro. Worker utiliza threads e menos memória.
  24. 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>
  25. 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
  26. Gerenciando o cache htcacheclean é usado para manter o tamanho

    do cache no limite desejado. htcacheclean -d -n -t -p /diretorio/cache -l 10M -i
  27. 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.
  28. 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
  29. 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
  30. 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>
  31. Proxy Em grandes estruturas é comum possuir servidores Apache atuando

    como Proxys. Eles realizam o redirecionamento da requisição para outro servidor.
  32. 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
  33. 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/
  34. Content Delivery Networks É um transparente proxy cache, que incrementa

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

    ab -v -q -c 100 -n 1000 \ http://mordor.diogoleal.com/index.html
  36. 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
  37. 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
  38. 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.
  39. 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?
  40. 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.