Otimizando Portais Plone: Dicas de Desempenho




         Douglas Soares de Andrade
             PyCon 4 - Setembro/2008
Licença de Uso
Esta apresentação está sendo disponibilizada pela
licença GNU/FDL e lhe dá todos os direitos para cópia e
u...
Problemas e Mitos

• Zope/Plone não funcionam para grandes
  Portais
• Zope não utiliza recursos de máquinas
  multiproces...
Problemas (Casa do Horrores)
Problema 01: Instâncias no “Front”

• Instâncias Zope/Plone sendo acessadas
  diretamente (instâncias “Rambo”)
Solução 01: Instâncias no “Front”

• Utilizar um servidor de cache (squid/varnish)
  – É tão importante no mundo Zope quan...
Problema 02: Alta disponibilidade

• Várias pessoas afirmam que NÃO é
  possível desenvolver soluções de alta
  disponibil...
Solução 02: Alta disponibilidade

• Até pouco tempo, não era possível (Sem
  utilizar ferramentas opensource e gratuitas)
...
Problema 03: Arquivos no ZODB

• Arquivos enormes sendo armazenados
  diretamente no ZODB
Solução 03: Arquivos no ZODB

• Utilizar o produto FileSystemStorage para
  armazenar os arquivos no sistema de
  arquivos...
Problema 04: Códigos

• Códigos que utilizam getObject para pegar
  informações simples que estão disponíveis
  nos indice...
Solução 04: Códigos

• Utilizar getObject apenas em último caso
• Em todos os outros casos, utilize as
  informações que j...
Problema 05: Infraestrutura não otimizada

• Alguns administradores costumam criar
  ambientes com as configurações “de
  ...
Solução 05: Infraestrutura não otimizada

• Otimização prematura é a causa de todo o
  mal !
• É preciso analisar cuidados...
Problema 06: Servers Multiprocessados
• Zope com apenas uma instância não utiliza
  diversos cores
• 100% em um core e 0% ...
Solução 06: Servers Multiprocessados

• … que existe !
• Utilize um servidor ZEO com várias
  instâncias (cuidado com isso...
Problema 07: Profilers Esquecidos

• Legal ! Você utilizou um profiler para
  determinar onde estava o problema de
  perfo...
Solução 07: Profilers Esquecidos

• Tatuar no braço: “Eu desabilito o meu
  profiler “ =)
• Sempre lembre de desabilitar o...
Problema 08: O quase off-topic

• Toma-que-é-teu
Solução 08: O quase off-topic

• Preparar a equipe para administrar
  Zope/Plone
• O Zope é carente – Ele precisa de carin...
Outras Dicas Valiosas

• Essa veio do Youtube, mas cai como uma
  luva: Cada um no seu quadrado !
• Utilize Varnish (“O” s...
Outras Dicas Valiosas

• O diagrama do “Quadrado” =)
E se nada resolver ?!

• Utilize deploy estático
  – Utilize nginx
  – Frozer (Weimar)
  – Chute (não testado – “wget -m”)
Agradecimentos
Agradecimentos
Fala que eu te escuto =)
Contato


Email   :   douglas@archlinux.org
            douglas.andrade@3pw.com.br

MSN    :    douglas@tuxfamily.org
Jabb...
Upcoming SlideShare
Loading in...5
×

Otimizando Portais Plone: Dicas de Desempenho

1,196

Published on

Palestra realizada na pyconbrasil 2008

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,196
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
16
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Otimizando Portais Plone: Dicas de Desempenho

  1. 1. Otimizando Portais Plone: Dicas de Desempenho Douglas Soares de Andrade PyCon 4 - Setembro/2008
  2. 2. Licença de Uso Esta apresentação está sendo disponibilizada pela licença GNU/FDL e lhe dá todos os direitos para cópia e utilização de todo o conteúdo, desde que você mantenha os créditos ao autor original.
  3. 3. Problemas e Mitos • Zope/Plone não funcionam para grandes Portais • Zope não utiliza recursos de máquinas multiprocessadas • Quem ouviu falar de Python ?! Zope/Plone ?! • Principal: Aplicações Zope/Plone não são iguais (no sentido de gerenciamento e manutenção) a aplicações PHP !!!!!!
  4. 4. Problemas (Casa do Horrores)
  5. 5. Problema 01: Instâncias no “Front” • Instâncias Zope/Plone sendo acessadas diretamente (instâncias “Rambo”)
  6. 6. Solução 01: Instâncias no “Front” • Utilizar um servidor de cache (squid/varnish) – É tão importante no mundo Zope quanto o controle de versão no mundo do desenvolvimento • Aumento exponencial da performance
  7. 7. Problema 02: Alta disponibilidade • Várias pessoas afirmam que NÃO é possível desenvolver soluções de alta disponibilidade com o Zope • Ops, problemas de hardware. Portal fora ?
  8. 8. Solução 02: Alta disponibilidade • Até pouco tempo, não era possível (Sem utilizar ferramentas opensource e gratuitas) • Felizmente isso mudou com o RelStorage (palestra do Rogério) • O que isso tem a ver com performance ?
  9. 9. Problema 03: Arquivos no ZODB • Arquivos enormes sendo armazenados diretamente no ZODB
  10. 10. Solução 03: Arquivos no ZODB • Utilizar o produto FileSystemStorage para armazenar os arquivos no sistema de arquivos do servidor ou em um ponto de rede (cuidado com pontos de falha)
  11. 11. Problema 04: Códigos • Códigos que utilizam getObject para pegar informações simples que estão disponíveis nos indices do catálogo • Pense no problema anterior (arquivos de 50mb, 100mb) sendo acessados via getObject para pegar apenas o título do Objeto
  12. 12. Solução 04: Códigos • Utilizar getObject apenas em último caso • Em todos os outros casos, utilize as informações que já estão disponíveis no catálogo ou crie novos indices (imagens) • Sempre ter cuidado com a mega ultra power resolução de um problema
  13. 13. Problema 05: Infraestrutura não otimizada • Alguns administradores costumam criar ambientes com as configurações “de fábrica” e não se preocupam com a performance por causa do mito: – Zope é lento mesmo ! Não adianta mexer em nada (Castas)
  14. 14. Solução 05: Infraestrutura não otimizada • Otimização prematura é a causa de todo o mal ! • É preciso analisar cuidadosamente a arquitetura e todos os componentes que deverão ser utilizados • Exemplo: – Squid • Cache Peers • Storage (UFS) • Tamanho de objetos a serem cacheados
  15. 15. Problema 06: Servers Multiprocessados • Zope com apenas uma instância não utiliza diversos cores • 100% em um core e 0% nos outros 15 • O cliente não quer saber do GIL do python e sim de uma solução...
  16. 16. Solução 06: Servers Multiprocessados • … que existe ! • Utilize um servidor ZEO com várias instâncias (cuidado com isso !) e deixe o kernel determinar pra onde cada processo vai • Eu quero determinar pra qual core o meu processo vai – taskset (afinidade)
  17. 17. Problema 07: Profilers Esquecidos • Legal ! Você utilizou um profiler para determinar onde estava o problema de performance • Só que... Ele ficou lá =)
  18. 18. Solução 07: Profilers Esquecidos • Tatuar no braço: “Eu desabilito o meu profiler “ =) • Sempre lembre de desabilitar o profiler quando o portal for para produção
  19. 19. Problema 08: O quase off-topic • Toma-que-é-teu
  20. 20. Solução 08: O quase off-topic • Preparar a equipe para administrar Zope/Plone • O Zope é carente – Ele precisa de carinho e acompanhamento constante (na verdade, apenas até que a solução estabilize) • Por fim: Novamente, Zope não é PHP !!
  21. 21. Outras Dicas Valiosas • Essa veio do Youtube, mas cai como uma luva: Cada um no seu quadrado ! • Utilize Varnish (“O” server de cache) =)
  22. 22. Outras Dicas Valiosas • O diagrama do “Quadrado” =)
  23. 23. E se nada resolver ?! • Utilize deploy estático – Utilize nginx – Frozer (Weimar) – Chute (não testado – “wget -m”)
  24. 24. Agradecimentos
  25. 25. Agradecimentos
  26. 26. Fala que eu te escuto =)
  27. 27. Contato Email : douglas@archlinux.org douglas.andrade@3pw.com.br MSN : douglas@tuxfamily.org Jabber : dsandrade@jabber.org Gtalk : dsandrade@gmail.com Muito Obrigado =)
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×