Otimizando Portais Plone: Dicas de Desempenho

1.607 visualizações

Publicada em

Palestra realizada na pyconbrasil 2008

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.607
No SlideShare
0
A partir de incorporações
0
Número de incorporações
13
Ações
Compartilhamentos
0
Downloads
17
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no 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 =)

×