SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
Otimização de infra-
estrutura para hospedagem
de websites
Fabiano Weimar dos Santos
xiru@xiru.org
quarta-feira, 30 de setembro de 2009
O que iremos ver?
• O Problema
• Fatos!
• Medindo Performance
• Ferramentas
• Dicas de Otimização de Performance
quarta-feira, 30 de setembro de 2009
O Problema
• Todo site dinâmico é lento, principalmente
com grandes quantidades de acessos
• Geralmente não é possível prever a
quantidade de acessos de um site
• Toda aplicação está sujeita a picos de acessos
em situações imprevisíveis...
• mas a infra-estrutura de um site deve estar
preparada para o pior
quarta-feira, 30 de setembro de 2009
Fatos!
• Quanto maior o tráfego de um portal, mais
especializada deverá ser a solução
• Frameworks genéricos geralmente não
tem boa performance
• Frameworks agilizam o desenvolvimento,
mas costumam não contribuir com a
performance (geralmente prejudicam)
quarta-feira, 30 de setembro de 2009
Dependendo do tráfego de seu
site, pode ser necessário
reescrever muito (ou todo)
código-fonte!
quarta-feira, 30 de setembro de 2009
Mas o que fazer quando
temos que hospedar algo
que é lento “by design”?
quarta-feira, 30 de setembro de 2009
Medindo Performance
• Mesmo que você considere algo rápido,
efetue medidas que avaliem a performance
dos sites que você irá hospedar, em
cenários com centenas de usuários
simultâneos
• O fenômeno das “redes sociais” pode,
sem aviso prévio, ser um DDOS!
quarta-feira, 30 de setembro de 2009
Medindo Performance
• Quando você já sabe que o site que será
hospedado é lento, efetue medidas para ter
uma idéia do ganho de performance depois
das otimizações
• Problema: nem toda mudança de
configuração irá resultar em melhorias de
performance; pode ocorrer o oposto.
quarta-feira, 30 de setembro de 2009
Não Chute!
Adote métricas.
quarta-feira, 30 de setembro de 2009
Ferramentas
• Medir performance de websites não é uma tarefa
trivial
• Ferramentas dificilmente simulam o
comportamento real das aplicações pois é difícil
conhecer o comportamento dos usuários “reais”
• Há muitas outras ferramentas de Benchmark
• http://www.opensourcetesting.org/
performance.php
quarta-feira, 30 de setembro de 2009
Ferramentas
• Apache Benchmark - ab
• Acompanha o Apache HTTP Server
• Costuma ser a forma mais simples de medir
a performance de uma página
• Não testa o carregamento de css, javascript,
imagens
• Não leva em consideração o cache que um
browser faz
quarta-feira, 30 de setembro de 2009
Ferramentas
Siege - HTTP load testing and
benchmarking utility
http://www.joedog.org/index/siege-home
quarta-feira, 30 de setembro de 2009
Ferramentas
Flood - a profile-driven HTTP load tester
http://httpd.apache.org/test/flood/
quarta-feira, 30 de setembro de 2009
É importante ter uma medida
de quanto rápido é um site,
com um determinado número
de acessos simultâneos.
quarta-feira, 30 de setembro de 2009
Dicas de Otimização de
Performance
• Geralmente é difícil dar dicas “genéricas”
de otimização de performance
• Cada tecnologia tem suas “manias”
• Em linhas gerais, quanto menos páginas o
servidor processa, mais rápido é o site
como um todo (cache)
quarta-feira, 30 de setembro de 2009
Dicas de Otimização de
Performance
• Nem todo site precisa de cache
• Há situações onde fazer cache significa
apenas mais processamento e, de fato,
queda de performance (Youtube)
• Desde que não exista processamento
envolvido, nada é mais rápido do que
servir conteúdo estático
quarta-feira, 30 de setembro de 2009
Apache mod_rewrite
RewriteCond /PATH_WWW/DOMINIO/%{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} !""
RewriteCond %{HTTP_COOKIE} !__ac=
RewriteCond %{HTTP:Authorization} !""
RewriteCond %{HTTP:If-None-Match} !""
RewriteRule ^/(.*) /DOMINIO/$1 [L]
RewriteCond /PATH_WWW/DOMINIO/%{REQUEST_FILENAME}/index.html -f
RewriteCond %{REQUEST_FILENAME} !""
RewriteCond %{HTTP_COOKIE} !__ac=
RewriteCond %{HTTP:Authorization} !""
RewriteCond %{HTTP:If-None-Match} !""
RewriteRule ^/(.*) /DOMINIO/$1 [L]
quarta-feira, 30 de setembro de 2009
Apache mod_rewrite
• $ cd PATH_WWW
• $ wget -m -np http://DOMINIO
quarta-feira, 30 de setembro de 2009
Cache Compartilhado
• Nem sempre servir apenas conteúdo
estático é viável
• CMS geralmente não se preocupam em
fazer “static deploy”; apenas publicam
páginas dinâmicas
• A solução mais simples costuma ser
adotar uma camada de webcache (Squid,
Varnish, etc)
quarta-feira, 30 de setembro de 2009
Cache Compartilhado
• Use o proxy para barrar tráfego indesejado
• Bots de Indexação (Googlebot, msnbot,
Yahoo Slurp, etc) podem significar até
35% do tráfego
• Tráfego de bots é bastante custoso, pois
não tem caráter repetitivo, desconsidera
a relevância e visita o conteúdo “em
profundidade”
quarta-feira, 30 de setembro de 2009
Bloqueio de Bots
(Squid)
acl badrobot browser -i Twiceler
acl badrobot browser -iYeti
acl badrobot browser -i Daumoa
http_access deny badrobot
acl bot browser -i bot
acl bot browser -i crawler
acl bot browser -i Slurp
acl horario_comercial time MTWHF 06:00-23:00
http_access deny horario_comercial bot
quarta-feira, 30 de setembro de 2009
Cache Compartilhado
• Para que o cache compartilhado de páginas
dinâmicas seja efetivo é importante que as
páginas sejam geradas com cabeçalhos
HTTP adequados
• Há extensões do Firefox que permitem a
análise facilitada de “headers” HTTP, como
a “web developer,” firebug,YSlow (minha
predileta)
quarta-feira, 30 de setembro de 2009
YSlow
quarta-feira, 30 de setembro de 2009
Fewer HTTP requests
quarta-feira, 30 de setembro de 2009
Add Expires headers
quarta-feira, 30 de setembro de 2009
Use a Content Delivery Network
(CDN)
quarta-feira, 30 de setembro de 2009
YSlow - Components
quarta-feira, 30 de setembro de 2009
YSlow - Statistics
quarta-feira, 30 de setembro de 2009
Apache mod_expires
ExpiresActive On
ExpiresDefault "access plus 5 minutes"
ExpiresByType image/gif "access plus 1 day"
ExpiresByType image/jpeg "access plus 1 day"
ExpiresByType image/png "access plus 1 day"
ExpiresByType text/css "access plus 1 day"
ExpiresByType application/x-javascript "access plus 1 day"
quarta-feira, 30 de setembro de 2009
Dicas de Otimização de
Performance
• Cuidado com dependências remotas
• browser -> application server ->
webservice -> sgbd -> storage...
• Num cluster, o maior custo costuma não
ser apenas processador, mas sim a
latência de rede
quarta-feira, 30 de setembro de 2009
Dicas de Otimização de
Performance
• Evite acordar muitos objetos no SGBD
• Evite conexões com SGBD
• Evite conexões LDAP
• Evite conexões HTTP (RSS, SOAP)
• Não faça conexões sem timeout
quarta-feira, 30 de setembro de 2009
Não tente advinhar
porque seu site está
lento: use um profiler!
quarta-feira, 30 de setembro de 2009
Dicas de Otimização de
Performance
• Use NTP para sincronizar relógios dos
proxies, servidores de aplicação e banco de
dados
• Evite gerar páginas dinâmicas com
headers que expiram muito rápido
• Falta de sincronia de relógios pode
acarretar a geração de headers “no
passado”
quarta-feira, 30 de setembro de 2009
Dicas de Otimização de
Performance
• Cacheability Engine Query
• http://www.web-caching.com/
cacheability.html
• Caching Tutorial for Web Authors and
Webmasters
• http://www.web-caching.com/mnot_tutorial/
quarta-feira, 30 de setembro de 2009
Obrigado.
quarta-feira, 30 de setembro de 2009

Contenu connexe

Tendances

Dicas para Workflow WordPress + JavaScript - WordCamp Salvador
Dicas para Workflow WordPress + JavaScript - WordCamp SalvadorDicas para Workflow WordPress + JavaScript - WordCamp Salvador
Dicas para Workflow WordPress + JavaScript - WordCamp SalvadorFellyph Cintra
 
Palestra WordCamp São Paulo 2017
Palestra WordCamp São Paulo 2017Palestra WordCamp São Paulo 2017
Palestra WordCamp São Paulo 2017Vinícius Lourenço
 
Otimizacao Front-End para WordPress - OlhoSEO 2013
Otimizacao Front-End para WordPress - OlhoSEO 2013Otimizacao Front-End para WordPress - OlhoSEO 2013
Otimizacao Front-End para WordPress - OlhoSEO 2013Guga Alves
 
Técnicas de frontend para aplicações django - PythonBrasil[9]
Técnicas de frontend para aplicações django  - PythonBrasil[9]Técnicas de frontend para aplicações django  - PythonBrasil[9]
Técnicas de frontend para aplicações django - PythonBrasil[9]Rael Max
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)Zeno Rocha
 
Como se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passosComo se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passosPedro Chaves
 
Desenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveisDesenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveisManuel Lemos
 
Ajax para quem_ouviu_falar
Ajax para quem_ouviu_falarAjax para quem_ouviu_falar
Ajax para quem_ouviu_falarCharleston Anjos
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsRafael Soares
 
Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Daniel Lopes
 
Como criar blogs: WordPress.com
Como criar blogs: WordPress.comComo criar blogs: WordPress.com
Como criar blogs: WordPress.comBreno Vitorino
 
Desenvolvimento CSS Cross-browser
Desenvolvimento CSS Cross-browserDesenvolvimento CSS Cross-browser
Desenvolvimento CSS Cross-browserSaulo Pratti
 
iMasters Intercon Dev WordPress - Segurança em WordPress
iMasters Intercon Dev WordPress - Segurança em WordPressiMasters Intercon Dev WordPress - Segurança em WordPress
iMasters Intercon Dev WordPress - Segurança em WordPressErick Belluci Tedeschi
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoEduardo Bohrer
 

Tendances (20)

Dicas para Workflow WordPress + JavaScript - WordCamp Salvador
Dicas para Workflow WordPress + JavaScript - WordCamp SalvadorDicas para Workflow WordPress + JavaScript - WordCamp Salvador
Dicas para Workflow WordPress + JavaScript - WordCamp Salvador
 
Palestra WordCamp São Paulo 2017
Palestra WordCamp São Paulo 2017Palestra WordCamp São Paulo 2017
Palestra WordCamp São Paulo 2017
 
Mobile First
Mobile FirstMobile First
Mobile First
 
Security & PHP
Security & PHPSecurity & PHP
Security & PHP
 
Otimização de aplicações web
Otimização de aplicações webOtimização de aplicações web
Otimização de aplicações web
 
Otimizacao Front-End para WordPress - OlhoSEO 2013
Otimizacao Front-End para WordPress - OlhoSEO 2013Otimizacao Front-End para WordPress - OlhoSEO 2013
Otimizacao Front-End para WordPress - OlhoSEO 2013
 
Técnicas de frontend para aplicações django - PythonBrasil[9]
Técnicas de frontend para aplicações django  - PythonBrasil[9]Técnicas de frontend para aplicações django  - PythonBrasil[9]
Técnicas de frontend para aplicações django - PythonBrasil[9]
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)
 
Como se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passosComo se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passos
 
Desenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveisDesenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveis
 
Ajax para quem_ouviu_falar
Ajax para quem_ouviu_falarAjax para quem_ouviu_falar
Ajax para quem_ouviu_falar
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
 
Node.js for Noobs
Node.js for NoobsNode.js for Noobs
Node.js for Noobs
 
Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)
 
Como criar blogs: WordPress.com
Como criar blogs: WordPress.comComo criar blogs: WordPress.com
Como criar blogs: WordPress.com
 
Desenvolvimento CSS Cross-browser
Desenvolvimento CSS Cross-browserDesenvolvimento CSS Cross-browser
Desenvolvimento CSS Cross-browser
 
iMasters Intercon Dev WordPress - Segurança em WordPress
iMasters Intercon Dev WordPress - Segurança em WordPressiMasters Intercon Dev WordPress - Segurança em WordPress
iMasters Intercon Dev WordPress - Segurança em WordPress
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Mini Curso Mashup Coreu
Mini Curso Mashup CoreuMini Curso Mashup Coreu
Mini Curso Mashup Coreu
 
Por que Node JS?
Por que Node JS?Por que Node JS?
Por que Node JS?
 

En vedette

Il marketing politico digitale per i circoli del Pd di Milano 24032015
Il marketing politico digitale per i circoli del Pd di Milano 24032015Il marketing politico digitale per i circoli del Pd di Milano 24032015
Il marketing politico digitale per i circoli del Pd di Milano 24032015Andrea Boscaro
 
6th period presentation
6th period presentation6th period presentation
6th period presentationEthan Bergeron
 
Create Value In Projects Through Information Ecology1
Create Value In Projects Through Information Ecology1Create Value In Projects Through Information Ecology1
Create Value In Projects Through Information Ecology1guest7471d9a
 
Contenidos de biología la comparación
Contenidos de biología la comparaciónContenidos de biología la comparación
Contenidos de biología la comparaciónGuillermina Schäfer
 
Effective Strategic Planning
Effective Strategic PlanningEffective Strategic Planning
Effective Strategic Planningguestf480a
 
Olmeda origenes Catalogue 2015
Olmeda origenes Catalogue 2015Olmeda origenes Catalogue 2015
Olmeda origenes Catalogue 2015Olmeda Orígenes
 
100%わかる!バランスシート(詳細解説版A4×32P)
100%わかる!バランスシート(詳細解説版A4×32P)100%わかる!バランスシート(詳細解説版A4×32P)
100%わかる!バランスシート(詳細解説版A4×32P)Koichiro Motoya
 
II Congreso Internacional Barcelona Inclusiva
II Congreso Internacional Barcelona Inclusiva II Congreso Internacional Barcelona Inclusiva
II Congreso Internacional Barcelona Inclusiva Sylvie Pérez
 
Business not as usual - MBA at Swansea Business School
Business not as usual - MBA at Swansea Business School Business not as usual - MBA at Swansea Business School
Business not as usual - MBA at Swansea Business School Yuliana Oselska
 
From Apples to eye surgery: Designing useful user experiences
From Apples to eye surgery: Designing useful user experiencesFrom Apples to eye surgery: Designing useful user experiences
From Apples to eye surgery: Designing useful user experiencesRuth Ellison
 

En vedette (18)

Il marketing politico digitale per i circoli del Pd di Milano 24032015
Il marketing politico digitale per i circoli del Pd di Milano 24032015Il marketing politico digitale per i circoli del Pd di Milano 24032015
Il marketing politico digitale per i circoli del Pd di Milano 24032015
 
6th period presentation
6th period presentation6th period presentation
6th period presentation
 
Create Value In Projects Through Information Ecology1
Create Value In Projects Through Information Ecology1Create Value In Projects Through Information Ecology1
Create Value In Projects Through Information Ecology1
 
Contenidos de biología la comparación
Contenidos de biología la comparaciónContenidos de biología la comparación
Contenidos de biología la comparación
 
Effective Strategic Planning
Effective Strategic PlanningEffective Strategic Planning
Effective Strategic Planning
 
Praveen R
Praveen RPraveen R
Praveen R
 
Mediakittravelblogprojectspaceelenapaschinger 01092015
Mediakittravelblogprojectspaceelenapaschinger 01092015Mediakittravelblogprojectspaceelenapaschinger 01092015
Mediakittravelblogprojectspaceelenapaschinger 01092015
 
Uso de la biblioteca
Uso de la bibliotecaUso de la biblioteca
Uso de la biblioteca
 
Olmeda origenes Catalogue 2015
Olmeda origenes Catalogue 2015Olmeda origenes Catalogue 2015
Olmeda origenes Catalogue 2015
 
100%わかる!バランスシート(詳細解説版A4×32P)
100%わかる!バランスシート(詳細解説版A4×32P)100%わかる!バランスシート(詳細解説版A4×32P)
100%わかる!バランスシート(詳細解説版A4×32P)
 
Matematica III
Matematica IIIMatematica III
Matematica III
 
4. Informatics
4. Informatics4. Informatics
4. Informatics
 
II Congreso Internacional Barcelona Inclusiva
II Congreso Internacional Barcelona Inclusiva II Congreso Internacional Barcelona Inclusiva
II Congreso Internacional Barcelona Inclusiva
 
Ecolabel affiche generique-a4
Ecolabel affiche generique-a4Ecolabel affiche generique-a4
Ecolabel affiche generique-a4
 
Business not as usual - MBA at Swansea Business School
Business not as usual - MBA at Swansea Business School Business not as usual - MBA at Swansea Business School
Business not as usual - MBA at Swansea Business School
 
Orientació acadèmica a les famílies de 4tESO_1617
Orientació acadèmica a les  famílies de 4tESO_1617Orientació acadèmica a les  famílies de 4tESO_1617
Orientació acadèmica a les famílies de 4tESO_1617
 
From Apples to eye surgery: Designing useful user experiences
From Apples to eye surgery: Designing useful user experiencesFrom Apples to eye surgery: Designing useful user experiences
From Apples to eye surgery: Designing useful user experiences
 
User prototype test
User prototype testUser prototype test
User prototype test
 

Similaire à Otimização de infra estrutura para hospedagem de websites

Meu Plone Site está lento. O que fazer???
Meu Plone Site está lento. O que fazer???Meu Plone Site está lento. O que fazer???
Meu Plone Site está lento. O que fazer???Fabiano Weimar
 
Desenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHPDesenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHPElton Minetto
 
App Web Escalaveis Fisl
App Web Escalaveis FislApp Web Escalaveis Fisl
App Web Escalaveis FislElton Minetto
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance RailsVitor Pellegrino
 
Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaHenrique Lima
 
Aumente a performance de seu site
Aumente a performance de seu siteAumente a performance de seu site
Aumente a performance de seu siteHenrique Lima
 
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Fabiano Weimar
 
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Gustavo Corrêa Alves
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosElias Nogueira
 
O que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seoO que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seointrofini
 
Apresentação "O CMS Seguro"
Apresentação "O CMS Seguro"Apresentação "O CMS Seguro"
Apresentação "O CMS Seguro"ISCTE
 
Ao infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanAo infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanElton Minetto
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressJulian Fernandes
 
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...minastestingconference
 
PHP, Gearman e Memcache
PHP, Gearman e MemcachePHP, Gearman e Memcache
PHP, Gearman e MemcacheAndre Golvea
 
Otimização Front-end para WordPress
Otimização Front-end para WordPressOtimização Front-end para WordPress
Otimização Front-end para WordPressGuga Alves
 
PHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPPHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPFlávio Lisboa
 
WebAssembly além da Web - Casos de Uso em IoT
WebAssembly além da Web - Casos de Uso em IoTWebAssembly além da Web - Casos de Uso em IoT
WebAssembly além da Web - Casos de Uso em IoTGDGFoz
 
Otimização de Websites para Ganho de Performance & Resiliência
Otimização de Websites para Ganho de Performance & ResiliênciaOtimização de Websites para Ganho de Performance & Resiliência
Otimização de Websites para Ganho de Performance & ResiliênciaSucuri
 

Similaire à Otimização de infra estrutura para hospedagem de websites (20)

Meu Plone Site está lento. O que fazer???
Meu Plone Site está lento. O que fazer???Meu Plone Site está lento. O que fazer???
Meu Plone Site está lento. O que fazer???
 
Desenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHPDesenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHP
 
App Web Escalaveis Fisl
App Web Escalaveis FislApp Web Escalaveis Fisl
App Web Escalaveis Fisl
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance Rails
 
Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinada
 
Aumente a performance de seu site
Aumente a performance de seu siteAumente a performance de seu site
Aumente a performance de seu site
 
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
 
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
 
Web Performance Client Side
Web Performance Client SideWeb Performance Client Side
Web Performance Client Side
 
O que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seoO que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seo
 
Apresentação "O CMS Seguro"
Apresentação "O CMS Seguro"Apresentação "O CMS Seguro"
Apresentação "O CMS Seguro"
 
Ao infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanAo infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e Gearman
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPress
 
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
 
PHP, Gearman e Memcache
PHP, Gearman e MemcachePHP, Gearman e Memcache
PHP, Gearman e Memcache
 
Otimização Front-end para WordPress
Otimização Front-end para WordPressOtimização Front-end para WordPress
Otimização Front-end para WordPress
 
PHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPPHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHP
 
WebAssembly além da Web - Casos de Uso em IoT
WebAssembly além da Web - Casos de Uso em IoTWebAssembly além da Web - Casos de Uso em IoT
WebAssembly além da Web - Casos de Uso em IoT
 
Otimização de Websites para Ganho de Performance & Resiliência
Otimização de Websites para Ganho de Performance & ResiliênciaOtimização de Websites para Ganho de Performance & Resiliência
Otimização de Websites para Ganho de Performance & Resiliência
 

Plus de Fabiano Weimar

Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)
Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)
Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)Fabiano Weimar
 
Portal SEBRAE - Quando o Plone Gerencia o Conteúdo Alheio
Portal SEBRAE - Quando o Plone Gerencia o Conteúdo AlheioPortal SEBRAE - Quando o Plone Gerencia o Conteúdo Alheio
Portal SEBRAE - Quando o Plone Gerencia o Conteúdo AlheioFabiano Weimar
 
Introducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo PloneIntroducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo PloneFabiano Weimar
 
Integração de sistemas legados com Plone
Integração de sistemas legados com PloneIntegração de sistemas legados com Plone
Integração de sistemas legados com PloneFabiano Weimar
 
Algoritmos genéticos em python - PyConBrasil 3 (2007)
Algoritmos genéticos em python - PyConBrasil 3 (2007)Algoritmos genéticos em python - PyConBrasil 3 (2007)
Algoritmos genéticos em python - PyConBrasil 3 (2007)Fabiano Weimar
 
Faça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.cachingFaça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.cachingFabiano Weimar
 
Adaptando o Plone para plataformas móveis
Adaptando o Plone para plataformas móveisAdaptando o Plone para plataformas móveis
Adaptando o Plone para plataformas móveisFabiano Weimar
 
Plone Yak Shaving and Bikeshedding
Plone Yak Shaving and BikesheddingPlone Yak Shaving and Bikeshedding
Plone Yak Shaving and BikesheddingFabiano Weimar
 
Understanding Plone Security
Understanding Plone SecurityUnderstanding Plone Security
Understanding Plone SecurityFabiano Weimar
 
Tips and Tricks about Plone Development for Mobile Platforms
Tips and Tricks about Plone Development for Mobile PlatformsTips and Tricks about Plone Development for Mobile Platforms
Tips and Tricks about Plone Development for Mobile PlatformsFabiano Weimar
 
Dicas e truques de otimização de websites python
Dicas e truques de otimização de websites pythonDicas e truques de otimização de websites python
Dicas e truques de otimização de websites pythonFabiano Weimar
 
Conhecendo o ubuntu enterprise cloud - UEC
Conhecendo o ubuntu enterprise cloud - UECConhecendo o ubuntu enterprise cloud - UEC
Conhecendo o ubuntu enterprise cloud - UECFabiano Weimar
 
Sistema de protocolo de documentos - SPDO
Sistema de protocolo de documentos - SPDOSistema de protocolo de documentos - SPDO
Sistema de protocolo de documentos - SPDOFabiano Weimar
 
Reconhecimento de fala em português brasileiro
Reconhecimento de fala em português brasileiroReconhecimento de fala em português brasileiro
Reconhecimento de fala em português brasileiroFabiano Weimar
 
Plone na plataforma mobile
Plone na plataforma mobilePlone na plataforma mobile
Plone na plataforma mobileFabiano Weimar
 

Plus de Fabiano Weimar (20)

Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)
Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)
Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)
 
Portal SEBRAE - Quando o Plone Gerencia o Conteúdo Alheio
Portal SEBRAE - Quando o Plone Gerencia o Conteúdo AlheioPortal SEBRAE - Quando o Plone Gerencia o Conteúdo Alheio
Portal SEBRAE - Quando o Plone Gerencia o Conteúdo Alheio
 
Introducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo PloneIntroducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo Plone
 
Integração de sistemas legados com Plone
Integração de sistemas legados com PloneIntegração de sistemas legados com Plone
Integração de sistemas legados com Plone
 
Algoritmos genéticos em python - PyConBrasil 3 (2007)
Algoritmos genéticos em python - PyConBrasil 3 (2007)Algoritmos genéticos em python - PyConBrasil 3 (2007)
Algoritmos genéticos em python - PyConBrasil 3 (2007)
 
Faça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.cachingFaça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.caching
 
Adaptando o Plone para plataformas móveis
Adaptando o Plone para plataformas móveisAdaptando o Plone para plataformas móveis
Adaptando o Plone para plataformas móveis
 
Plone Yak Shaving and Bikeshedding
Plone Yak Shaving and BikesheddingPlone Yak Shaving and Bikeshedding
Plone Yak Shaving and Bikeshedding
 
Understanding Plone Security
Understanding Plone SecurityUnderstanding Plone Security
Understanding Plone Security
 
Tips and Tricks about Plone Development for Mobile Platforms
Tips and Tricks about Plone Development for Mobile PlatformsTips and Tricks about Plone Development for Mobile Platforms
Tips and Tricks about Plone Development for Mobile Platforms
 
Segurança no plone
Segurança no ploneSegurança no plone
Segurança no plone
 
Dicas e truques de otimização de websites python
Dicas e truques de otimização de websites pythonDicas e truques de otimização de websites python
Dicas e truques de otimização de websites python
 
Conhecendo o ubuntu enterprise cloud - UEC
Conhecendo o ubuntu enterprise cloud - UECConhecendo o ubuntu enterprise cloud - UEC
Conhecendo o ubuntu enterprise cloud - UEC
 
Sistema de protocolo de documentos - SPDO
Sistema de protocolo de documentos - SPDOSistema de protocolo de documentos - SPDO
Sistema de protocolo de documentos - SPDO
 
Novidades do plone 4
Novidades do plone 4Novidades do plone 4
Novidades do plone 4
 
O novo plone 4
O novo plone 4O novo plone 4
O novo plone 4
 
Reconhecimento de fala em português brasileiro
Reconhecimento de fala em português brasileiroReconhecimento de fala em português brasileiro
Reconhecimento de fala em português brasileiro
 
IPv6
IPv6IPv6
IPv6
 
Plone na nuvem
Plone na nuvemPlone na nuvem
Plone na nuvem
 
Plone na plataforma mobile
Plone na plataforma mobilePlone na plataforma mobile
Plone na plataforma mobile
 

Otimização de infra estrutura para hospedagem de websites

  • 1. Otimização de infra- estrutura para hospedagem de websites Fabiano Weimar dos Santos xiru@xiru.org quarta-feira, 30 de setembro de 2009
  • 2. O que iremos ver? • O Problema • Fatos! • Medindo Performance • Ferramentas • Dicas de Otimização de Performance quarta-feira, 30 de setembro de 2009
  • 3. O Problema • Todo site dinâmico é lento, principalmente com grandes quantidades de acessos • Geralmente não é possível prever a quantidade de acessos de um site • Toda aplicação está sujeita a picos de acessos em situações imprevisíveis... • mas a infra-estrutura de um site deve estar preparada para o pior quarta-feira, 30 de setembro de 2009
  • 4. Fatos! • Quanto maior o tráfego de um portal, mais especializada deverá ser a solução • Frameworks genéricos geralmente não tem boa performance • Frameworks agilizam o desenvolvimento, mas costumam não contribuir com a performance (geralmente prejudicam) quarta-feira, 30 de setembro de 2009
  • 5. Dependendo do tráfego de seu site, pode ser necessário reescrever muito (ou todo) código-fonte! quarta-feira, 30 de setembro de 2009
  • 6. Mas o que fazer quando temos que hospedar algo que é lento “by design”? quarta-feira, 30 de setembro de 2009
  • 7. Medindo Performance • Mesmo que você considere algo rápido, efetue medidas que avaliem a performance dos sites que você irá hospedar, em cenários com centenas de usuários simultâneos • O fenômeno das “redes sociais” pode, sem aviso prévio, ser um DDOS! quarta-feira, 30 de setembro de 2009
  • 8. Medindo Performance • Quando você já sabe que o site que será hospedado é lento, efetue medidas para ter uma idéia do ganho de performance depois das otimizações • Problema: nem toda mudança de configuração irá resultar em melhorias de performance; pode ocorrer o oposto. quarta-feira, 30 de setembro de 2009
  • 10. Ferramentas • Medir performance de websites não é uma tarefa trivial • Ferramentas dificilmente simulam o comportamento real das aplicações pois é difícil conhecer o comportamento dos usuários “reais” • Há muitas outras ferramentas de Benchmark • http://www.opensourcetesting.org/ performance.php quarta-feira, 30 de setembro de 2009
  • 11. Ferramentas • Apache Benchmark - ab • Acompanha o Apache HTTP Server • Costuma ser a forma mais simples de medir a performance de uma página • Não testa o carregamento de css, javascript, imagens • Não leva em consideração o cache que um browser faz quarta-feira, 30 de setembro de 2009
  • 12. Ferramentas Siege - HTTP load testing and benchmarking utility http://www.joedog.org/index/siege-home quarta-feira, 30 de setembro de 2009
  • 13. Ferramentas Flood - a profile-driven HTTP load tester http://httpd.apache.org/test/flood/ quarta-feira, 30 de setembro de 2009
  • 14. É importante ter uma medida de quanto rápido é um site, com um determinado número de acessos simultâneos. quarta-feira, 30 de setembro de 2009
  • 15. Dicas de Otimização de Performance • Geralmente é difícil dar dicas “genéricas” de otimização de performance • Cada tecnologia tem suas “manias” • Em linhas gerais, quanto menos páginas o servidor processa, mais rápido é o site como um todo (cache) quarta-feira, 30 de setembro de 2009
  • 16. Dicas de Otimização de Performance • Nem todo site precisa de cache • Há situações onde fazer cache significa apenas mais processamento e, de fato, queda de performance (Youtube) • Desde que não exista processamento envolvido, nada é mais rápido do que servir conteúdo estático quarta-feira, 30 de setembro de 2009
  • 17. Apache mod_rewrite RewriteCond /PATH_WWW/DOMINIO/%{REQUEST_FILENAME} -f RewriteCond %{REQUEST_FILENAME} !"" RewriteCond %{HTTP_COOKIE} !__ac= RewriteCond %{HTTP:Authorization} !"" RewriteCond %{HTTP:If-None-Match} !"" RewriteRule ^/(.*) /DOMINIO/$1 [L] RewriteCond /PATH_WWW/DOMINIO/%{REQUEST_FILENAME}/index.html -f RewriteCond %{REQUEST_FILENAME} !"" RewriteCond %{HTTP_COOKIE} !__ac= RewriteCond %{HTTP:Authorization} !"" RewriteCond %{HTTP:If-None-Match} !"" RewriteRule ^/(.*) /DOMINIO/$1 [L] quarta-feira, 30 de setembro de 2009
  • 18. Apache mod_rewrite • $ cd PATH_WWW • $ wget -m -np http://DOMINIO quarta-feira, 30 de setembro de 2009
  • 19. Cache Compartilhado • Nem sempre servir apenas conteúdo estático é viável • CMS geralmente não se preocupam em fazer “static deploy”; apenas publicam páginas dinâmicas • A solução mais simples costuma ser adotar uma camada de webcache (Squid, Varnish, etc) quarta-feira, 30 de setembro de 2009
  • 20. Cache Compartilhado • Use o proxy para barrar tráfego indesejado • Bots de Indexação (Googlebot, msnbot, Yahoo Slurp, etc) podem significar até 35% do tráfego • Tráfego de bots é bastante custoso, pois não tem caráter repetitivo, desconsidera a relevância e visita o conteúdo “em profundidade” quarta-feira, 30 de setembro de 2009
  • 21. Bloqueio de Bots (Squid) acl badrobot browser -i Twiceler acl badrobot browser -iYeti acl badrobot browser -i Daumoa http_access deny badrobot acl bot browser -i bot acl bot browser -i crawler acl bot browser -i Slurp acl horario_comercial time MTWHF 06:00-23:00 http_access deny horario_comercial bot quarta-feira, 30 de setembro de 2009
  • 22. Cache Compartilhado • Para que o cache compartilhado de páginas dinâmicas seja efetivo é importante que as páginas sejam geradas com cabeçalhos HTTP adequados • Há extensões do Firefox que permitem a análise facilitada de “headers” HTTP, como a “web developer,” firebug,YSlow (minha predileta) quarta-feira, 30 de setembro de 2009
  • 23. YSlow quarta-feira, 30 de setembro de 2009
  • 24. Fewer HTTP requests quarta-feira, 30 de setembro de 2009
  • 25. Add Expires headers quarta-feira, 30 de setembro de 2009
  • 26. Use a Content Delivery Network (CDN) quarta-feira, 30 de setembro de 2009
  • 27. YSlow - Components quarta-feira, 30 de setembro de 2009
  • 28. YSlow - Statistics quarta-feira, 30 de setembro de 2009
  • 29. Apache mod_expires ExpiresActive On ExpiresDefault "access plus 5 minutes" ExpiresByType image/gif "access plus 1 day" ExpiresByType image/jpeg "access plus 1 day" ExpiresByType image/png "access plus 1 day" ExpiresByType text/css "access plus 1 day" ExpiresByType application/x-javascript "access plus 1 day" quarta-feira, 30 de setembro de 2009
  • 30. Dicas de Otimização de Performance • Cuidado com dependências remotas • browser -> application server -> webservice -> sgbd -> storage... • Num cluster, o maior custo costuma não ser apenas processador, mas sim a latência de rede quarta-feira, 30 de setembro de 2009
  • 31. Dicas de Otimização de Performance • Evite acordar muitos objetos no SGBD • Evite conexões com SGBD • Evite conexões LDAP • Evite conexões HTTP (RSS, SOAP) • Não faça conexões sem timeout quarta-feira, 30 de setembro de 2009
  • 32. Não tente advinhar porque seu site está lento: use um profiler! quarta-feira, 30 de setembro de 2009
  • 33. Dicas de Otimização de Performance • Use NTP para sincronizar relógios dos proxies, servidores de aplicação e banco de dados • Evite gerar páginas dinâmicas com headers que expiram muito rápido • Falta de sincronia de relógios pode acarretar a geração de headers “no passado” quarta-feira, 30 de setembro de 2009
  • 34. Dicas de Otimização de Performance • Cacheability Engine Query • http://www.web-caching.com/ cacheability.html • Caching Tutorial for Web Authors and Webmasters • http://www.web-caching.com/mnot_tutorial/ quarta-feira, 30 de setembro de 2009
  • 35. Obrigado. quarta-feira, 30 de setembro de 2009