3. PHP Advanced
Arquitectura
Load Balancer
• Determina a forma como o
sistema se comporta Web Server Web Server
• Afecta directamente a
escalabilidade
• Consequentemente afecta a
performance do sistema storage MySQL
Cache e Performance 3
4. PHP Advanced
Arquitectura
• Vários front-ends respondem a pedidos dos
utilizadores
• Dados de sessão devem ser gravados num
storage partilhado
• Scripts e conteúdo estático devem ser
gravados em storage local
• Escala horizontalmente
Cache e Performance 4
5. PHP Advanced
Arquitectura
• Exemplo: 2 frontends, com escalabilidade
Load Balancer
Web Server Web Server
storage MySQL
Cache e Performance 5
6. PHP Advanced
Arquitectura
• Exemplo: 2 frontends, 2 MySQLs
Load Balancer
Web Server Web Server
MySQL MySQL
storage
read write
Cache e Performance 6
7. PHP Advanced
Arquitectura
• Exemplo: 2 frontends, 2 MySQLs reads, 1
MySQL write Load Balancer
Web Server Web Server
Load Balancer MySQL
storage
write
MySQL MySQL
read read
Cache e Performance 7
8. PHP Advanced
Profiling
• Permite medir os tempos de execução de
um script, ou de parte de um script
• Permite medir a utilização de memória
durante a execução de um script
• Fornece informação que ajuda a melhorar a
performance de toda a aplicação
Cache e Performance 8
11. PHP Advanced
Benchmarking
• Permite medir os tempos de execução de
um script ou conjunto de scripts,
remotamente
• Ajuda a compreender até que ponto um
Web Site consegue responder a pedidos
• Tipicamente é executado repetidamente ou
durante um período de tempo
Cache e Performance 11
12. PHP Advanced
Benchmarking
• ab (Apache Benchmark):
http://httpd.apache.org/docs/2.0/programs/ab.html
• JMeter: http://jakarta.apache.org/jmeter/
Cache e Performance 12
13. PHP Advanced
Conteúdo estático
• Não envolve processamento
• Fornecido directamente pelo Web Server
• Leve e rápido
• Exemplos:
• imagens, HTML, CSS, JavaScript
Cache e Performance 13
14. PHP Advanced
Conteúdo dinâmico
• Envolve processamento no servidor
• Tipicamente um script é interpretado
• Mais lento que o conteúdo estático
• Exemplos:
• Perl, PHP, Python, Ruby
Cache e Performance 14
15. PHP Advanced
Objectivos
• Sempre que possível, usar todo o conteúdo
estático
• Dividir as páginas em blocos estáticos e
dinâmicos, minimizando a quantidade de
blocos dinâmicos
• Utilizar cache nos blocos dinâmicos
Cache e Performance 15
16. PHP Advanced
Cache
• Permite gravar conteúdo dinâmico de
modo a servi-lo estático
• Tem um tempo de vida, findo o qual o
conteúdo volta a ser gerado dinamicamente
• Tipicamente o conteúdo estático é gravado
no disco
Cache e Performance 16
17. PHP Advanced
PEAR::Cache_Lite
• Instalação: pear install Cache_Lite
• Permite gravar conteúdo em cache
• Optimizado para a rapidez de escrita e
leitura
• Grava conteúdo em disco ou memória
• Serializa conteúdo antes de gravar
Cache e Performance 17
18. PHP Advanced
PEAR::Cache_Lite
• Opções importantes
• cacheDir: directório onde os ficheiros de
cache serão gravados
• lifeTime: tempo de vida da cache
• automaticSerialization: serialização
automática do conteúdo a ser gravado
• memoryCaching: liga a cache em
memória
Cache e Performance 18
19. PHP Advanced
PEAR::Cache_Lite
Cache e Performance 19
20. PHP Advanced
Compressão
• Permite servir conteúdo comprimido
• Depende das capacidades de cada browser
• Pode ser configurada através do Apache
(httpd.conf ou .htaccess)
• Pode ser iniciada a partir do PHP
• Oferece poupanças na largura de banda
utilizada
Cache e Performance 20
22. PHP Advanced
Compressão
• Iniciação no PHP através de ob_gzhandler
Cache e Performance 22
23. PHP Advanced
Compilação de código
• Transforma o código PHP em opcodes
• Código permanece em memória
• É mais rápido a executar
• Não requer interpretação dos scripts
Cache e Performance 23
24. PHP Advanced
Compilação de código
• Zend Optimizer: http://www.zend.com/
• APC: http://www.php.net/apc
Cache e Performance 24
25. PHP Advanced
Projecto
• Inserção de cache na visualização dos
resultados
• Determinação do correcto tempo de
vida da cache através do TTL dos RSS
• Finalização do projecto
Cache e Performance 25
26. PHP Advanced
Resumo
• Diferentes tipos de arquitectura
• Profiling e benchmarking
• Conteúdo estático vs conteúdo dinâmico
• Cache através de PEAR::Cache_Lite
• Compressão
• Compilação
Cache e Performance 26