Tuning Apache/MySQL/PHP
   para Desenvolvedores
         By Douglas V. Pasqua
   Zend Certified Engineer / LPI / SCJP
       douglas.pasqua@gmail.com
Objetivos

● Dicas de Tuning para Apache/MySQL e PHP.
● Parâmetros de configuração para tuning de Apache e MySQL
● Instalação e configuração de ferramentas de tuning.
● Análise de códigos PHP.
● Identifcar Gargalos.
● Voltado para desenvolvedores.
Tópicos Apache

● AllowOverride
● mod_status
● SymLinks
● KeepAlive
● MaxClients
● Outras dicas
Apache

● AllowOverride
● mod_status
● SymLinks
● KeepAlive
● MaxClients
● Outras Dicas
Apache, AllowOverride

● Permite sobrescrever configurações do Apache através dos
  arquivos .htaccess:
Apache, AllowOverride

● Caso habilitado, Apache terá que checar por arquivos .htaccess em
  todas requisições.

● Sempre que possível, manter desabilitado.
Apache, AllowOverride

● Transportar as configurações de .htaccess para o arquivo de
  configuração principal
Apache

● AllowOverride
● ExtendedStatus
● SymLinks
● KeepAlive
● MaxClients
● Outras Dicas
Apache, mod_status
● O mod_status permite acompanhar a performance do servidor
  Apache.

● Ideal para identificar se há necessidade de aumentar os recursos do
  apache.
Apache, mod_status
Apache, mod_status
● Manter o parâmetro ExtendedStatus para Off, para melhor
  performance.
Apache

● AllowOverride
● mod_status
● SymLinks
● KeepAlive
● MaxClients
● MaxRequestsPerChild
● Outras Dicas
Apache, SymLinks
● Diz ao Apache para seguir/não seguir links simbólicos.

● Manter desabilitado faz com que o Apache realize checagens
  extras. (verificando se o arquivo acessado é um link ou não)
Apache

● AllowOverride
● ExtendedStatus
● SymLinks
● KeepAlive
● MaxClients
● MaxRequestsPerChild
● Outras Dicas
Apache, KeepAlive
● KeepAlive.
   ○ Permite múltiplas requisições por uma mesma conexão TCP
   ○ Melhora desempenho do site.
   ○ Reduz utilização de CPU.
   ○ Aumenta consumo de memória.
Apache, KeepAlive
Apache

● AllowOverride
● ExtendedStatus
● SymLinks
● KeepAlive
● MaxClients
● Outras Dicas
Apache, MaxClients

● Determina o limite máximo de conexões simultâneas no Apache.

● Aumentar também o ServerLimit quando > 256
   ○ Padrão 256
   ○ Setar antes de MaxClients
Apache, MaxClients

       MaxClients ≈ (RAM - memória outros processos)
             / (média do processo apache)

● RAM
6109184 Kb (free -m)

● Média de Memória do Apache
12000kb (ps -ylC apache2 --sort:rss)

● Reservar memória para outros processos
819200kb

MaxClients = (6109184 - 819200) / 12000
MaxClients = 441
Apache

● AllowOverride
● ExtendedStatus
● SymLinks
● KeepAlive
● MaxClients
● Outras Dicas
Apache, Outras Dicas
● mod_deflate
  ○ Habilita compressão de dados.
  ○ Ideal para arquivos estáticos (html, css, javascript, xml, etc.)
  ○ Maioria dos navegadores modernos suportam nativamente.

● Separar conteúdo estático de conteúdo dinâmico.
   ○ Usar um servidor Http mais leve para conteúdo estático.
MySQL

● Monitorando consultas lentas
● max_connections
● table_cache
● query_cache_size
● thread_cache_size
MySQL, Consultas Lentas

● Habilitar o log de consultas lentas permite identificar gargalos de
  maneira simples.

● Para Habiltiar, editar o my.cnf e acrescentar:

[mysqld]
...
long_query_time = 1
log_slow_queries = /var/log/mysql-slow.log
MySQL, Consultas Lentas


● Exemplo de Log /var/log/mysql-slow.log:

# Time: 110406 17:00:00
# Query_time: 9 Lock_time: 0 Rows_sent: 1
Rows_examined: 5643851
select count(*) from backuplog;
MySQL

● Monitorando consultas lentas
● max_connections
● table_cache
● query_cache_size
● thread_cache_size
MySQL, max_connections

● Determina o número máximo de conexões simultâneas no MySQL.

● Aumentar de acordo com a necessidade.

● Receber “Too many connections” significa que excedeu esse
  limite.

● Aumentar esse parâmetro influência:

  ○ Quantidade de Memória disponível.
  ○ Quantidade de memória usada por cada conexão.
  ○ Número de file descriptors abertos.
MySQL, max_connections

● Para aumentar o número de conexões simultâneas:

[mysqld]
...
max_connections = 200
MySQL, max_connections

● Para aumentar o número de conexões simultâneas:

[mysqld]
...
max_connections = 200

● Para diagnósticos das conexões em processo no momento:

mysql> show processlistG
MySQL

● Monitorando consultas lentas
● max_connections
● table_cache
● query_cache_size
● thread_cache_size
MySQL, table_cache

● Toda vez que o MySQL abre uma tabela, coloca ela em cache.

● table_cache define o número de tabelas abertas em cache para
 todas threads.

● Está diretamente relacionado com o parâmetro max_connections:

table_cache = max_connections * n

● n é o número máximo de tabelas usadas na query em que você
  possui mais Joins no sistema.
MySQL, table_cache

● table_cache é limitado pelo número de file descriptors disponiveis
  pelo S.O.

● Utiliza mais memória, porém melhora a performance.

● Lembre-se que precisa reservar extra file descriptors para tabelas
  temporárias e arquivos.

● Verificar número de file descriptors do S.O. (Linux):

# cat /proc/sys/fs/file-max
# lsof -p $(pidof mysqld) | wc -l
MySQL

● Monitorando consultas lentas
● max_connections
● table_cache
● query_cache_size
● thread_cache_size
MySQL, query_cache_size

● Quantidade de memória alocada para guardar resultado das queries.

● Por padrão o valor é 0 (Desabilitado).

● Os valores para esse parâmetro devem ser múltiplos de 1024.

● Cuidado para não setar para um valor muito alto. As threads
  precisam fazer lock no cache durante updates.

● O valor mínimo é 40Kb, para alocação das estruturas.
MySQL, query_cache_size

 [mysqld]
  ...
query_cache_size = 128M
MySQL

● Monitorando consultas lentas
● max_connections
● table_cache
● query_cache_size
● thread_cache_size
MySQL, thread_cache_size

● Quantidade de threads em cache. (Conexões persistentes).

● Diminuir o máximo possível a criação de novas threads.

● Equação para testar a eficiência do cache:

100 - ((Threads_created / Connections) * 100) = 99%
MySQL, thread_cache_size

● Equação para testar a eficiência do cache:

100 - ((Threads_created / Connections) * 100)

Threads_created
  Número de Threads criadas desde que o MySQL foi iniciado.

Connections
 Número total de conexões desde que o MySQL foi iniciado.
MySQL, thread_cache_size

Threads_created




Threads_created: 1294
MySQL, thread_cache_size

Connections:




Connections: 7321961
MySQL, thread_cache_size

Threads_created: 1294
Connections: 7321961

100 - ((1294 / 7321961) * 100) = 99,98%
PHP

● Identificando gargalos em aplicação PHP
● memcached
● Opções de aceleradores de código php
● Usando APC (Alternative PHP Cache)
● Caching com Zend_Cache
● PHP e Computação em Nuvem
PHP, Profiler

● O Profiler do xdebug permite identificar gargalhos e/ou partes mais
  lentas de sua aplicação.

● Ideal para saber em quais pontos você pode melhor o desempenho.
PHP, Profiler

● Habilitando o Profiler do xdebug no PHP:

$ sudo apt-get install php5-xdebug

● Editando o arquivo /etc/php5/apache2/conf.d/xdebug.ini:

zend_extension=/usr/lib/php5/20090626/xdebug.so
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = /log/xdebug

● Finalizando:

$ sudo chown www-data /log/xdebug
$ sudo service apache2 restart
PHP, Profiler
PHP, Profiler
● webgrind - https://code.google.com/p/webgrind/
   ○ Ferramenta para análise de logs do xdebug profiler

● config.php:
PHP, Profiler
PHP

● Identificando gargalos em aplicação PHP
● memcached
● Opções de aceleradores de código php
● Usando APC (Alternative PHP Cache)
● Caching com Zend_Cache
● PHP e Computação em Nuvem
PHP, memcached

● Sistema de cache de alta perfomance com dados armazenados em
  memória.
PHP, memcached

● Sistema de cache de alta perfomance com dados armazenados em
  memória.

● Principal propósito:

  ○ Diminuir a carga em banco de dados de aplicações web.

● Instalável através de uma extensão PECL.
PHP, memcached

● Inserindo e obtendo dados do cache:
PHP, memcached

● Limpando dados do cache:
PHP

● Identificando gargalos em aplicação PHP
● memcached
● Opções de aceleradores de código php
● Usando APC (Alternative PHP Cache)
● Caching com Zend_Cache
● PHP e Computação em Nuvem
PHP, aceleradores de código
● APC - Alternative PHP Cache.
   ○ Ideal para WebServers muito carregados e aplicações com
     muitos componentes.
   ○ Software Livre
   ○ Mantido pelos desenvolvedores do core do PHP.
   ○ Distribuído através de um pacote PECL.
   ○ Previsão para estar integrado junto com o PHP versão 5.4
   ○ Compatibilidade com Zend Optimizer
   ○ Fácil administração
   ○ Suporte para Windows
   ○ Suporte para PHP 5.4
PHP, aceleradores de código

● XCache
   ○ Mantido pelo mesmo desenvolvedor do lighttpd.
   ○ Performance semelhante APC ou até melhor.
   ○ Suporte para PHP 5.4.

● Zend Server
   ○ Possui cache de opcode interno
   ○ Opção comercial
PHP

● Identificando gargalos em aplicação PHP
● memcached
● Opções de aceleradores de código php
● Usando APC (Alternative PHP Cache)
● Caching com Zend_Cache
● PHP e Computação em Nuvem
PHP, APC
PHP, APC

● Interface Administrativa:
PHP, APC

● Usando APC como cache de dados:
PHP

● Identificando gargalos em aplicação PHP
● memcached
● Opções de aceleradores de código php
● Usando APC (Alternative PHP Cache)
● Caching com Zend_Cache
● PHP e Computação em Nuvem
PHP, Zend_Cache

● Classe de Cache distribuído junto com o Zend Framework.

● Pode ser utilizado como Stand Alone ou junto com o MVC.

● Provê uma forma genérica de realizar cache de dados.
PHP, Zend_Cache

● Adapters
   ○ APC
   ○ Dba
   ○ Filesystem
   ○ Memcached
   ○ Memory
   ○ WinCache
   ○ ZendServerDisk
   ○ ZendServerShm
PHP, Zend_Cache
● Exemplo de utilização do Zend_Cache
PHP

● Identificando gargalos em aplicação PHP
● memcached
● Opções de aceleradores de código php
● Usando APC (Alternative PHP Cache)
● Caching com Zend_Cache
● PHP e Computação em Nuvem
PHP, Cloud

● IaaS (Infrastructure-as-a-Service)
   ○ Infraestrutura (Recursos) são contratados como serviço.
      ■ rede, armazenamento, memória, cpu, etc.
   ○ Alta escalabilidade.
   ○ Sistema de monitoramento avançado.
   ○ Sistemas IaaS mais conhecidos:
      ■ EC2 Amazon
      ■ IBM SmartCloud
PHP, Cloud

● PaaS (Plataforme-as-a-Service)
   ○ Plataforma para criação, hospedagem e controle de Software.
   ○ Fácil Escalabilidade.
   ○ Não se preocupe mais com administração de infraestrutura.
   ○ Segurança Integrada.
   ○ Sistemas PaaS mais conhecidos:
      ■ Google AppEngine
      ■ Force.com
      ■ Zend Developer Cloud
PHP, Cloud

● SaaS (Software-as-a-Service).
   ○ Não se preocupe mais com instalação de software
   ○ Software utilizado 100% via Web.
   ○ Não há aquisição de licenças.
   ○ Pague somente pela utilização do serviço.
   ○ Disponibiliza API para integrações externas.
   ○ Sistemas SaaS mais conhecidos:
      ■ Google Docs
      ■ Gmail
      ■ Hotmail
PHP, Cloud
● Amazon
   ○ Amazon S3 (Simple Storage Service)
   ○ Simple Queue Service (SQS)
   ○ SimpleDB
   ○ EC2 (Elastic Compute Cloud)
   ○ Auto Scaling
   ○ ...

    http://aws.amazon.com/pt/php/
PHP, Cloud
● Windows Azure
  ○ Blob Storage
  ○ Table Service
  ○ Queue Storage
  ○ SQL Database
  ○ SendGrid Email Service
  ○ ...

 http://www.windowsazure.com/en-us/develop/php/
PHP, Cloud
● www.phpcloud.com (Zend Developer Cloud)

● O que é ?
  ○ Ambiente para rodar aplicações em php na Nuvem.
  ○ Criado pela própria Zend.
  ○ Ambiente PaaS.
  ○ Infraestrutura interna usando Zend Server.

● Elástico
   ○ Fácil escalabilidade.
   ○ Permite que você aumente ou diminui recursos conforme
     necessidade.
PHP, Cloud
● www.phpcloud.com (Zend Developer Cloud)

● Rápido
   ○ Ambiente otimizado para diminuir tempo de resposta de
     requisições.
   ○ Acelerador de código.
   ○ Cache de bytecode.
   ○ Cache de dados.
   ○ Cache total de páginas.
PHP, Cloud
● www.phpcloud.com (Zend Developer Cloud)

● Seguro
   ○ Alta disponibilidade.
   ○ Monitoração de Aplicação.
   ○ Hot Fixes.

● Plataformas
   ○ RightScale
   ○ Amazon
   ○ Rackspace
   ○ IBM SmartCloud
PHP, Cloud
● www.phpcloud.com (Zend Developer Cloud)
PHP, Cloud
● Simple Cloud API
   ○ Interface comum para diversos serviços de aplicações em cloud.
   ○ Distribuído junto com Zend Framework.

● File Storage
   ○ Amazon S3.
   ○ Table Storage Windows Azure.
   ○ Cloud Storage Nirvanix
   ○ Rackspace
PHP, Cloud
● Simple Cloud API

● Document Service
   ○ Amazon SimpleDB.
   ○ Table Service Windows Azure

● Queue Service
  ○ Amazon Sqs
  ○ Queue Service Windows Azure

● Infrastructure Services
   ○ Amazon EC2
   ○ Rackspace Cloud Servers
Obrigado por assistir!

        Para saber mais:
http://dpasqua.wordpress.com

     douglas.pasqua@gmail.com

Tuning Apache/MySQL/PHP para desenvolvedores

  • 1.
    Tuning Apache/MySQL/PHP para Desenvolvedores By Douglas V. Pasqua Zend Certified Engineer / LPI / SCJP douglas.pasqua@gmail.com
  • 2.
    Objetivos ● Dicas deTuning para Apache/MySQL e PHP. ● Parâmetros de configuração para tuning de Apache e MySQL ● Instalação e configuração de ferramentas de tuning. ● Análise de códigos PHP. ● Identifcar Gargalos. ● Voltado para desenvolvedores.
  • 3.
    Tópicos Apache ● AllowOverride ●mod_status ● SymLinks ● KeepAlive ● MaxClients ● Outras dicas
  • 4.
    Apache ● AllowOverride ● mod_status ●SymLinks ● KeepAlive ● MaxClients ● Outras Dicas
  • 5.
    Apache, AllowOverride ● Permitesobrescrever configurações do Apache através dos arquivos .htaccess:
  • 6.
    Apache, AllowOverride ● Casohabilitado, Apache terá que checar por arquivos .htaccess em todas requisições. ● Sempre que possível, manter desabilitado.
  • 7.
    Apache, AllowOverride ● Transportaras configurações de .htaccess para o arquivo de configuração principal
  • 8.
    Apache ● AllowOverride ● ExtendedStatus ●SymLinks ● KeepAlive ● MaxClients ● Outras Dicas
  • 9.
    Apache, mod_status ● Omod_status permite acompanhar a performance do servidor Apache. ● Ideal para identificar se há necessidade de aumentar os recursos do apache.
  • 10.
  • 11.
    Apache, mod_status ● Mantero parâmetro ExtendedStatus para Off, para melhor performance.
  • 12.
    Apache ● AllowOverride ● mod_status ●SymLinks ● KeepAlive ● MaxClients ● MaxRequestsPerChild ● Outras Dicas
  • 13.
    Apache, SymLinks ● Dizao Apache para seguir/não seguir links simbólicos. ● Manter desabilitado faz com que o Apache realize checagens extras. (verificando se o arquivo acessado é um link ou não)
  • 14.
    Apache ● AllowOverride ● ExtendedStatus ●SymLinks ● KeepAlive ● MaxClients ● MaxRequestsPerChild ● Outras Dicas
  • 15.
    Apache, KeepAlive ● KeepAlive. ○ Permite múltiplas requisições por uma mesma conexão TCP ○ Melhora desempenho do site. ○ Reduz utilização de CPU. ○ Aumenta consumo de memória.
  • 16.
  • 17.
    Apache ● AllowOverride ● ExtendedStatus ●SymLinks ● KeepAlive ● MaxClients ● Outras Dicas
  • 18.
    Apache, MaxClients ● Determinao limite máximo de conexões simultâneas no Apache. ● Aumentar também o ServerLimit quando > 256 ○ Padrão 256 ○ Setar antes de MaxClients
  • 19.
    Apache, MaxClients MaxClients ≈ (RAM - memória outros processos) / (média do processo apache) ● RAM 6109184 Kb (free -m) ● Média de Memória do Apache 12000kb (ps -ylC apache2 --sort:rss) ● Reservar memória para outros processos 819200kb MaxClients = (6109184 - 819200) / 12000 MaxClients = 441
  • 20.
    Apache ● AllowOverride ● ExtendedStatus ●SymLinks ● KeepAlive ● MaxClients ● Outras Dicas
  • 21.
    Apache, Outras Dicas ●mod_deflate ○ Habilita compressão de dados. ○ Ideal para arquivos estáticos (html, css, javascript, xml, etc.) ○ Maioria dos navegadores modernos suportam nativamente. ● Separar conteúdo estático de conteúdo dinâmico. ○ Usar um servidor Http mais leve para conteúdo estático.
  • 22.
    MySQL ● Monitorando consultaslentas ● max_connections ● table_cache ● query_cache_size ● thread_cache_size
  • 23.
    MySQL, Consultas Lentas ●Habilitar o log de consultas lentas permite identificar gargalos de maneira simples. ● Para Habiltiar, editar o my.cnf e acrescentar: [mysqld] ... long_query_time = 1 log_slow_queries = /var/log/mysql-slow.log
  • 24.
    MySQL, Consultas Lentas ●Exemplo de Log /var/log/mysql-slow.log: # Time: 110406 17:00:00 # Query_time: 9 Lock_time: 0 Rows_sent: 1 Rows_examined: 5643851 select count(*) from backuplog;
  • 25.
    MySQL ● Monitorando consultaslentas ● max_connections ● table_cache ● query_cache_size ● thread_cache_size
  • 26.
    MySQL, max_connections ● Determinao número máximo de conexões simultâneas no MySQL. ● Aumentar de acordo com a necessidade. ● Receber “Too many connections” significa que excedeu esse limite. ● Aumentar esse parâmetro influência: ○ Quantidade de Memória disponível. ○ Quantidade de memória usada por cada conexão. ○ Número de file descriptors abertos.
  • 27.
    MySQL, max_connections ● Paraaumentar o número de conexões simultâneas: [mysqld] ... max_connections = 200
  • 28.
    MySQL, max_connections ● Paraaumentar o número de conexões simultâneas: [mysqld] ... max_connections = 200 ● Para diagnósticos das conexões em processo no momento: mysql> show processlistG
  • 29.
    MySQL ● Monitorando consultaslentas ● max_connections ● table_cache ● query_cache_size ● thread_cache_size
  • 30.
    MySQL, table_cache ● Todavez que o MySQL abre uma tabela, coloca ela em cache. ● table_cache define o número de tabelas abertas em cache para todas threads. ● Está diretamente relacionado com o parâmetro max_connections: table_cache = max_connections * n ● n é o número máximo de tabelas usadas na query em que você possui mais Joins no sistema.
  • 31.
    MySQL, table_cache ● table_cacheé limitado pelo número de file descriptors disponiveis pelo S.O. ● Utiliza mais memória, porém melhora a performance. ● Lembre-se que precisa reservar extra file descriptors para tabelas temporárias e arquivos. ● Verificar número de file descriptors do S.O. (Linux): # cat /proc/sys/fs/file-max # lsof -p $(pidof mysqld) | wc -l
  • 32.
    MySQL ● Monitorando consultaslentas ● max_connections ● table_cache ● query_cache_size ● thread_cache_size
  • 33.
    MySQL, query_cache_size ● Quantidadede memória alocada para guardar resultado das queries. ● Por padrão o valor é 0 (Desabilitado). ● Os valores para esse parâmetro devem ser múltiplos de 1024. ● Cuidado para não setar para um valor muito alto. As threads precisam fazer lock no cache durante updates. ● O valor mínimo é 40Kb, para alocação das estruturas.
  • 34.
    MySQL, query_cache_size [mysqld] ... query_cache_size = 128M
  • 35.
    MySQL ● Monitorando consultaslentas ● max_connections ● table_cache ● query_cache_size ● thread_cache_size
  • 36.
    MySQL, thread_cache_size ● Quantidadede threads em cache. (Conexões persistentes). ● Diminuir o máximo possível a criação de novas threads. ● Equação para testar a eficiência do cache: 100 - ((Threads_created / Connections) * 100) = 99%
  • 37.
    MySQL, thread_cache_size ● Equaçãopara testar a eficiência do cache: 100 - ((Threads_created / Connections) * 100) Threads_created Número de Threads criadas desde que o MySQL foi iniciado. Connections Número total de conexões desde que o MySQL foi iniciado.
  • 38.
  • 39.
  • 40.
    MySQL, thread_cache_size Threads_created: 1294 Connections:7321961 100 - ((1294 / 7321961) * 100) = 99,98%
  • 41.
    PHP ● Identificando gargalosem aplicação PHP ● memcached ● Opções de aceleradores de código php ● Usando APC (Alternative PHP Cache) ● Caching com Zend_Cache ● PHP e Computação em Nuvem
  • 42.
    PHP, Profiler ● OProfiler do xdebug permite identificar gargalhos e/ou partes mais lentas de sua aplicação. ● Ideal para saber em quais pontos você pode melhor o desempenho.
  • 43.
    PHP, Profiler ● Habilitandoo Profiler do xdebug no PHP: $ sudo apt-get install php5-xdebug ● Editando o arquivo /etc/php5/apache2/conf.d/xdebug.ini: zend_extension=/usr/lib/php5/20090626/xdebug.so xdebug.profiler_enable = 1 xdebug.profiler_output_dir = /log/xdebug ● Finalizando: $ sudo chown www-data /log/xdebug $ sudo service apache2 restart
  • 44.
  • 45.
    PHP, Profiler ● webgrind- https://code.google.com/p/webgrind/ ○ Ferramenta para análise de logs do xdebug profiler ● config.php:
  • 46.
  • 47.
    PHP ● Identificando gargalosem aplicação PHP ● memcached ● Opções de aceleradores de código php ● Usando APC (Alternative PHP Cache) ● Caching com Zend_Cache ● PHP e Computação em Nuvem
  • 48.
    PHP, memcached ● Sistemade cache de alta perfomance com dados armazenados em memória.
  • 49.
    PHP, memcached ● Sistemade cache de alta perfomance com dados armazenados em memória. ● Principal propósito: ○ Diminuir a carga em banco de dados de aplicações web. ● Instalável através de uma extensão PECL.
  • 50.
    PHP, memcached ● Inserindoe obtendo dados do cache:
  • 51.
  • 52.
    PHP ● Identificando gargalosem aplicação PHP ● memcached ● Opções de aceleradores de código php ● Usando APC (Alternative PHP Cache) ● Caching com Zend_Cache ● PHP e Computação em Nuvem
  • 53.
    PHP, aceleradores decódigo ● APC - Alternative PHP Cache. ○ Ideal para WebServers muito carregados e aplicações com muitos componentes. ○ Software Livre ○ Mantido pelos desenvolvedores do core do PHP. ○ Distribuído através de um pacote PECL. ○ Previsão para estar integrado junto com o PHP versão 5.4 ○ Compatibilidade com Zend Optimizer ○ Fácil administração ○ Suporte para Windows ○ Suporte para PHP 5.4
  • 54.
    PHP, aceleradores decódigo ● XCache ○ Mantido pelo mesmo desenvolvedor do lighttpd. ○ Performance semelhante APC ou até melhor. ○ Suporte para PHP 5.4. ● Zend Server ○ Possui cache de opcode interno ○ Opção comercial
  • 55.
    PHP ● Identificando gargalosem aplicação PHP ● memcached ● Opções de aceleradores de código php ● Usando APC (Alternative PHP Cache) ● Caching com Zend_Cache ● PHP e Computação em Nuvem
  • 56.
  • 57.
    PHP, APC ● InterfaceAdministrativa:
  • 58.
    PHP, APC ● UsandoAPC como cache de dados:
  • 59.
    PHP ● Identificando gargalosem aplicação PHP ● memcached ● Opções de aceleradores de código php ● Usando APC (Alternative PHP Cache) ● Caching com Zend_Cache ● PHP e Computação em Nuvem
  • 60.
    PHP, Zend_Cache ● Classede Cache distribuído junto com o Zend Framework. ● Pode ser utilizado como Stand Alone ou junto com o MVC. ● Provê uma forma genérica de realizar cache de dados.
  • 61.
    PHP, Zend_Cache ● Adapters ○ APC ○ Dba ○ Filesystem ○ Memcached ○ Memory ○ WinCache ○ ZendServerDisk ○ ZendServerShm
  • 62.
    PHP, Zend_Cache ● Exemplode utilização do Zend_Cache
  • 63.
    PHP ● Identificando gargalosem aplicação PHP ● memcached ● Opções de aceleradores de código php ● Usando APC (Alternative PHP Cache) ● Caching com Zend_Cache ● PHP e Computação em Nuvem
  • 64.
    PHP, Cloud ● IaaS(Infrastructure-as-a-Service) ○ Infraestrutura (Recursos) são contratados como serviço. ■ rede, armazenamento, memória, cpu, etc. ○ Alta escalabilidade. ○ Sistema de monitoramento avançado. ○ Sistemas IaaS mais conhecidos: ■ EC2 Amazon ■ IBM SmartCloud
  • 65.
    PHP, Cloud ● PaaS(Plataforme-as-a-Service) ○ Plataforma para criação, hospedagem e controle de Software. ○ Fácil Escalabilidade. ○ Não se preocupe mais com administração de infraestrutura. ○ Segurança Integrada. ○ Sistemas PaaS mais conhecidos: ■ Google AppEngine ■ Force.com ■ Zend Developer Cloud
  • 66.
    PHP, Cloud ● SaaS(Software-as-a-Service). ○ Não se preocupe mais com instalação de software ○ Software utilizado 100% via Web. ○ Não há aquisição de licenças. ○ Pague somente pela utilização do serviço. ○ Disponibiliza API para integrações externas. ○ Sistemas SaaS mais conhecidos: ■ Google Docs ■ Gmail ■ Hotmail
  • 67.
    PHP, Cloud ● Amazon ○ Amazon S3 (Simple Storage Service) ○ Simple Queue Service (SQS) ○ SimpleDB ○ EC2 (Elastic Compute Cloud) ○ Auto Scaling ○ ... http://aws.amazon.com/pt/php/
  • 68.
    PHP, Cloud ● WindowsAzure ○ Blob Storage ○ Table Service ○ Queue Storage ○ SQL Database ○ SendGrid Email Service ○ ... http://www.windowsazure.com/en-us/develop/php/
  • 69.
    PHP, Cloud ● www.phpcloud.com(Zend Developer Cloud) ● O que é ? ○ Ambiente para rodar aplicações em php na Nuvem. ○ Criado pela própria Zend. ○ Ambiente PaaS. ○ Infraestrutura interna usando Zend Server. ● Elástico ○ Fácil escalabilidade. ○ Permite que você aumente ou diminui recursos conforme necessidade.
  • 70.
    PHP, Cloud ● www.phpcloud.com(Zend Developer Cloud) ● Rápido ○ Ambiente otimizado para diminuir tempo de resposta de requisições. ○ Acelerador de código. ○ Cache de bytecode. ○ Cache de dados. ○ Cache total de páginas.
  • 71.
    PHP, Cloud ● www.phpcloud.com(Zend Developer Cloud) ● Seguro ○ Alta disponibilidade. ○ Monitoração de Aplicação. ○ Hot Fixes. ● Plataformas ○ RightScale ○ Amazon ○ Rackspace ○ IBM SmartCloud
  • 72.
    PHP, Cloud ● www.phpcloud.com(Zend Developer Cloud)
  • 73.
    PHP, Cloud ● SimpleCloud API ○ Interface comum para diversos serviços de aplicações em cloud. ○ Distribuído junto com Zend Framework. ● File Storage ○ Amazon S3. ○ Table Storage Windows Azure. ○ Cloud Storage Nirvanix ○ Rackspace
  • 74.
    PHP, Cloud ● SimpleCloud API ● Document Service ○ Amazon SimpleDB. ○ Table Service Windows Azure ● Queue Service ○ Amazon Sqs ○ Queue Service Windows Azure ● Infrastructure Services ○ Amazon EC2 ○ Rackspace Cloud Servers
  • 75.
    Obrigado por assistir! Para saber mais: http://dpasqua.wordpress.com douglas.pasqua@gmail.com