otimizando portais plone: dicas de desempenho

Post on 09-Jul-2015

1.186 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Palestra realizada na pyconbrasil 2008

TRANSCRIPT

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

top related