Post on 09-Jul-2015
description
Otimizando Portais Plone: Dicas de Desempenho
Douglas Soares de AndradePyCon 4 - Setembro/2008
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.
Licença de Uso
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 !!!!!!
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 quanto o
controle de versão no mundo do desenvolvimento
• Aumento exponencial da performance
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 ?
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 ?
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 do servidor ou em um ponto de rede (cuidado com pontos de falha)
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
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
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)
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
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...
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)
Problema 07: Profilers Esquecidos
• Legal ! Você utilizou um profiler para determinar onde estava o problema de performance
• Só que... Ele ficou lá =)
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
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 carinho e acompanhamento constante (na verdade, apenas até que a solução estabilize)
• Por fim: Novamente, Zope não é PHP !!
Outras Dicas Valiosas
• Essa veio do Youtube, mas cai como uma luva: Cada um no seu quadrado !
• Utilize Varnish (“O” server de cache) =)
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 =)
Email : douglas@archlinux.org douglas.andrade@3pw.com.br
MSN : douglas@tuxfamily.orgJabber : dsandrade@jabber.orgGtalk : dsandrade@gmail.com
Muito Obrigado =)
Contato