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 !!!!!!
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
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) =)