SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Cache e Performance
PHP Advanced - 23 de Setembro de 2008
      Bruno Pedro <bpedro@tarpipe.com>
PHP Advanced




                      Conteúdo
   • Arquitectura
   • Profiling
   • Benchmarking
   • Cache
   • Compressão
   • Projecto
   • Resumo
Cache e Performance      2
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
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
PHP Advanced




                      Arquitectura
   • Exemplo: 2 frontends, com escalabilidade
                                    Load Balancer




                         Web Server             Web Server




                          storage                   MySQL




Cache e Performance                      5
PHP Advanced




                      Arquitectura
   • Exemplo: 2 frontends, 2 MySQLs
                                         Load Balancer




                                Web Server           Web Server




                                                    MySQL         MySQL
                      storage
                                                     read          write




Cache e Performance                             6
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
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
PHP Advanced




                      Profiling
   • Xdebug: http://www.xdebug.org/




   • Zend Platform: http://www.zend.com/
Cache e Performance      9
PHP Advanced




                      Profiling




Cache e Performance      10
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
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
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
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
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
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
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
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
PHP Advanced




            PEAR::Cache_Lite




Cache e Performance   19
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
PHP Advanced




                       Compressão
    • Configuração no Apache

SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html


 Cache e Performance       21
PHP Advanced




                      Compressão
   • Iniciação no PHP através de ob_gzhandler




Cache e Performance       22
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
PHP Advanced




    Compilação de código


   • Zend Optimizer: http://www.zend.com/
   • APC: http://www.php.net/apc


Cache e Performance   24
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
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
PHP Summer School




                    Questões?




OOP em PHP              27
PHP Advanced




               Mais informação

   • O meu blog: http://unfoldingtheweb.com/

   • Manual de PHP: http://www.php.net/
   • PEAR: http://pear.php.net/

Cache e Performance    28

Mais conteúdo relacionado

Mais procurados

Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...Joao Galdino Mello de Souza
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)Carlos Santos
 
Escalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginxEscalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginxSaveincloud
 
Cloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceCloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceSaveincloud
 
Servidor Próprio - Configuração do CWP Panel
Servidor Próprio - Configuração do CWP PanelServidor Próprio - Configuração do CWP Panel
Servidor Próprio - Configuração do CWP PanelSaveincloud
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Claudio Miranda
 
Cloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceCloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceSaveincloud
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?Luis Vendrame
 
Java Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na NuvemJava Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na NuvemSaveincloud
 
Alta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxAlta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxThiago Paes
 
2 Ads
2 Ads2 Ads
2 Adslcbj
 
Subvertendo o codigo PHP com SVN - ENSOL
Subvertendo o codigo PHP com SVN - ENSOLSubvertendo o codigo PHP com SVN - ENSOL
Subvertendo o codigo PHP com SVN - ENSOLRicardo Coelho
 

Mais procurados (20)

Web seminario varnish
Web seminario varnishWeb seminario varnish
Web seminario varnish
 
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)
 
Escalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginxEscalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginx
 
Cloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceCloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performance
 
Servidor Próprio - Configuração do CWP Panel
Servidor Próprio - Configuração do CWP PanelServidor Próprio - Configuração do CWP Panel
Servidor Próprio - Configuração do CWP Panel
 
PostgreSQL Ha
PostgreSQL HaPostgreSQL Ha
PostgreSQL Ha
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7
 
Cflp t017
Cflp t017Cflp t017
Cflp t017
 
NoSQL Livre
NoSQL LivreNoSQL Livre
NoSQL Livre
 
Cloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceCloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performance
 
Performance em Java
Performance em JavaPerformance em Java
Performance em Java
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?
 
Java Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na NuvemJava Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na Nuvem
 
Memcached
MemcachedMemcached
Memcached
 
Alta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxAlta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com Nginx
 
2 Ads
2 Ads2 Ads
2 Ads
 
Caching
CachingCaching
Caching
 
Subvertendo o codigo PHP com SVN - ENSOL
Subvertendo o codigo PHP com SVN - ENSOLSubvertendo o codigo PHP com SVN - ENSOL
Subvertendo o codigo PHP com SVN - ENSOL
 
Novidades do PHP 5.3 e 6
Novidades do PHP 5.3 e 6Novidades do PHP 5.3 e 6
Novidades do PHP 5.3 e 6
 

Semelhante a Cache e Performance (in portuguese)

Performance (Web&PHP)
Performance (Web&PHP)Performance (Web&PHP)
Performance (Web&PHP)Nuno Loureiro
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresDouglas V. Pasqua
 
Desenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveisDesenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveisManuel Lemos
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheDell Technologies
 
ClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpCampus Party Brasil
 
Usando Hyper-v 2012 para virtualização do SQL Server
Usando Hyper-v 2012 para virtualização do SQL ServerUsando Hyper-v 2012 para virtualização do SQL Server
Usando Hyper-v 2012 para virtualização do SQL Serverleorsilva
 
Entendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPEntendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPAdler Medrado
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRodrigo Recio
 
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Tiago Hillebrandt
 
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]Tiago Hillebrandt
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveiselliando dias
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformanceFelipe Ribeiro
 
Técnicas para ser escalável com PHP
Técnicas para ser escalável com PHPTécnicas para ser escalável com PHP
Técnicas para ser escalável com PHPFilipe La Ruina
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMRodrigo Zaccara
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 

Semelhante a Cache e Performance (in portuguese) (20)

Performance (Web&PHP)
Performance (Web&PHP)Performance (Web&PHP)
Performance (Web&PHP)
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedores
 
Desenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveisDesenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveis
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+Apache
 
ClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs Php
 
Clusterização de Aplicações PHP
Clusterização de Aplicações PHPClusterização de Aplicações PHP
Clusterização de Aplicações PHP
 
Usando Hyper-v 2012 para virtualização do SQL Server
Usando Hyper-v 2012 para virtualização do SQL ServerUsando Hyper-v 2012 para virtualização do SQL Server
Usando Hyper-v 2012 para virtualização do SQL Server
 
Entendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPEntendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHP
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
 
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
 
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
 
Instalação CakePHP 2.2.3
Instalação CakePHP 2.2.3Instalação CakePHP 2.2.3
Instalação CakePHP 2.2.3
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
Conceitoseaplicaes
ConceitoseaplicaesConceitoseaplicaes
Conceitoseaplicaes
 
Técnicas para ser escalável com PHP
Técnicas para ser escalável com PHPTécnicas para ser escalável com PHP
Técnicas para ser escalável com PHP
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Performance Web com ASP.NET MVC
Performance Web com ASP.NET MVCPerformance Web com ASP.NET MVC
Performance Web com ASP.NET MVC
 

Mais de Bruno Pedro

What are Web APIs
What are Web APIsWhat are Web APIs
What are Web APIsBruno Pedro
 
Growing your business with an API
Growing your business with an APIGrowing your business with an API
Growing your business with an APIBruno Pedro
 
Product growth with an API
Product growth with an APIProduct growth with an API
Product growth with an APIBruno Pedro
 
How to grow your business with an API
How to grow your business with an APIHow to grow your business with an API
How to grow your business with an APIBruno Pedro
 
APIs Love to Chat
APIs Love to ChatAPIs Love to Chat
APIs Love to ChatBruno Pedro
 
How to Automate API Testing
How to Automate API TestingHow to Automate API Testing
How to Automate API TestingBruno Pedro
 
Asynchronous Microservices in nodejs
Asynchronous Microservices in nodejsAsynchronous Microservices in nodejs
Asynchronous Microservices in nodejsBruno Pedro
 
How to Automate API Discovery
How to Automate API DiscoveryHow to Automate API Discovery
How to Automate API DiscoveryBruno Pedro
 
Api Design & The Paris Subway
Api Design & The Paris SubwayApi Design & The Paris Subway
Api Design & The Paris SubwayBruno Pedro
 
The importance of /me
The importance of /meThe importance of /me
The importance of /meBruno Pedro
 
Maintainable consumers
Maintainable consumersMaintainable consumers
Maintainable consumersBruno Pedro
 
API Code Generation
API Code GenerationAPI Code Generation
API Code GenerationBruno Pedro
 
Bridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and CustomersBridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and CustomersBruno Pedro
 
Who's using your API?
Who's using your API?Who's using your API?
Who's using your API?Bruno Pedro
 
Is OAuth Really Secure?
Is OAuth Really Secure?Is OAuth Really Secure?
Is OAuth Really Secure?Bruno Pedro
 
Link extraction and classification
Link extraction and classificationLink extraction and classification
Link extraction and classificationBruno Pedro
 
tarpipe WordPress plugin demo
tarpipe WordPress plugin demotarpipe WordPress plugin demo
tarpipe WordPress plugin demoBruno Pedro
 
Everything OAuth
Everything OAuthEverything OAuth
Everything OAuthBruno Pedro
 

Mais de Bruno Pedro (20)

What are Web APIs
What are Web APIsWhat are Web APIs
What are Web APIs
 
Growing your business with an API
Growing your business with an APIGrowing your business with an API
Growing your business with an API
 
Product growth with an API
Product growth with an APIProduct growth with an API
Product growth with an API
 
How to grow your business with an API
How to grow your business with an APIHow to grow your business with an API
How to grow your business with an API
 
APIs Love to Chat
APIs Love to ChatAPIs Love to Chat
APIs Love to Chat
 
How to Automate API Testing
How to Automate API TestingHow to Automate API Testing
How to Automate API Testing
 
Asynchronous Microservices in nodejs
Asynchronous Microservices in nodejsAsynchronous Microservices in nodejs
Asynchronous Microservices in nodejs
 
How to Automate API Discovery
How to Automate API DiscoveryHow to Automate API Discovery
How to Automate API Discovery
 
Api Design & The Paris Subway
Api Design & The Paris SubwayApi Design & The Paris Subway
Api Design & The Paris Subway
 
The importance of /me
The importance of /meThe importance of /me
The importance of /me
 
Maintainable consumers
Maintainable consumersMaintainable consumers
Maintainable consumers
 
API Code Generation
API Code GenerationAPI Code Generation
API Code Generation
 
Bridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and CustomersBridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and Customers
 
Who's using your API?
Who's using your API?Who's using your API?
Who's using your API?
 
node-fs
node-fsnode-fs
node-fs
 
Is OAuth Really Secure?
Is OAuth Really Secure?Is OAuth Really Secure?
Is OAuth Really Secure?
 
Link extraction and classification
Link extraction and classificationLink extraction and classification
Link extraction and classification
 
tarpipe WordPress plugin demo
tarpipe WordPress plugin demotarpipe WordPress plugin demo
tarpipe WordPress plugin demo
 
OAuth checklist
OAuth checklistOAuth checklist
OAuth checklist
 
Everything OAuth
Everything OAuthEverything OAuth
Everything OAuth
 

Cache e Performance (in portuguese)

  • 1. Cache e Performance PHP Advanced - 23 de Setembro de 2008 Bruno Pedro <bpedro@tarpipe.com>
  • 2. PHP Advanced Conteúdo • Arquitectura • Profiling • Benchmarking • Cache • Compressão • Projecto • Resumo Cache e Performance 2
  • 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
  • 9. PHP Advanced Profiling • Xdebug: http://www.xdebug.org/ • Zend Platform: http://www.zend.com/ Cache e Performance 9
  • 10. PHP Advanced Profiling Cache e Performance 10
  • 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
  • 21. PHP Advanced Compressão • Configuração no Apache SetOutputFilter DEFLATE BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4.0[678] no-gzip BrowserMatch bMSIE !no-gzip !gzip-only-text/html Cache e Performance 21
  • 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
  • 27. PHP Summer School Questões? OOP em PHP 27
  • 28. PHP Advanced Mais informação • O meu blog: http://unfoldingtheweb.com/ • Manual de PHP: http://www.php.net/ • PEAR: http://pear.php.net/ Cache e Performance 28