• Like
Otimizando Portais Plone: Dicas de Desempenho
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Otimizando Portais Plone: Dicas de Desempenho

  • 1,126 views
Published

Palestra realizada na pyconbrasil 2008

Palestra realizada na pyconbrasil 2008

Published 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
1,126
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
15
Comments
0
Likes
2

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. Otimizando Portais Plone: Dicas de Desempenho Douglas Soares de Andrade PyCon 4 - Setembro/2008
  • 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. 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. Problemas (Casa do Horrores)
  • 5. Problema 01: Instâncias no “Front” • Instâncias Zope/Plone sendo acessadas diretamente (instâncias “Rambo”)
  • 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. 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. 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. Problema 03: Arquivos no ZODB • Arquivos enormes sendo armazenados diretamente no ZODB
  • 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. 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. 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. 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. 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. 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. 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. Problema 07: Profilers Esquecidos • Legal ! Você utilizou um profiler para determinar onde estava o problema de performance • Só que... Ele ficou lá =)
  • 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. Problema 08: O quase off-topic • Toma-que-é-teu
  • 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. Outras Dicas Valiosas • Essa veio do Youtube, mas cai como uma luva: Cada um no seu quadrado ! • Utilize Varnish (“O” server de cache) =)
  • 22. Outras Dicas Valiosas • O diagrama do “Quadrado” =)
  • 23. E se nada resolver ?! • Utilize deploy estático – Utilize nginx – Frozer (Weimar) – Chute (não testado – “wget -m”)
  • 24. Agradecimentos
  • 25. Agradecimentos
  • 26. Fala que eu te escuto =)
  • 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 =)