SlideShare une entreprise Scribd logo
1  sur  75
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기NAVER D2
 
Monitoring Oracle Database Instances with Zabbix
Monitoring Oracle Database Instances with ZabbixMonitoring Oracle Database Instances with Zabbix
Monitoring Oracle Database Instances with ZabbixGerger
 
ProxySQL for MySQL
ProxySQL for MySQLProxySQL for MySQL
ProxySQL for MySQLMydbops
 
Best Practices for Running PostgreSQL on AWS - DAT314 - re:Invent 2017
Best Practices for Running PostgreSQL on AWS - DAT314 - re:Invent 2017Best Practices for Running PostgreSQL on AWS - DAT314 - re:Invent 2017
Best Practices for Running PostgreSQL on AWS - DAT314 - re:Invent 2017Amazon Web Services
 
Apache Hudi: The Path Forward
Apache Hudi: The Path ForwardApache Hudi: The Path Forward
Apache Hudi: The Path ForwardAlluxio, Inc.
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用についてLINE Corporation
 
PostgreSQL and JDBC: striving for high performance
PostgreSQL and JDBC: striving for high performancePostgreSQL and JDBC: striving for high performance
PostgreSQL and JDBC: striving for high performanceVladimir Sitnikov
 
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdfMySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdfAlkin Tezuysal
 
모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)IMQA
 
Spark autotuning talk final
Spark autotuning talk finalSpark autotuning talk final
Spark autotuning talk finalRachel Warren
 
Nginx Architecture
Nginx ArchitectureNginx Architecture
Nginx Architecture건 손
 
PL22 - Backup and Restore Performance.pptx
PL22 - Backup and Restore Performance.pptxPL22 - Backup and Restore Performance.pptx
PL22 - Backup and Restore Performance.pptxVinicius M Grippa
 
patroni-based citrus high availability environment deployment
patroni-based citrus high availability environment deploymentpatroni-based citrus high availability environment deployment
patroni-based citrus high availability environment deploymenthyeongchae lee
 
Spark Autotuning Talk - Strata New York
Spark Autotuning Talk - Strata New YorkSpark Autotuning Talk - Strata New York
Spark Autotuning Talk - Strata New YorkHolden Karau
 
웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우IMQA
 
Presto At Arm Treasure Data - 2019 Updates
Presto At Arm Treasure Data - 2019 UpdatesPresto At Arm Treasure Data - 2019 Updates
Presto At Arm Treasure Data - 2019 UpdatesTaro L. Saito
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
 

Tendances (20)

[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기
 
Monitoring Oracle Database Instances with Zabbix
Monitoring Oracle Database Instances with ZabbixMonitoring Oracle Database Instances with Zabbix
Monitoring Oracle Database Instances with Zabbix
 
Kafka Deep Dive
Kafka Deep DiveKafka Deep Dive
Kafka Deep Dive
 
Apache Kafka Best Practices
Apache Kafka Best PracticesApache Kafka Best Practices
Apache Kafka Best Practices
 
Ansible - Introduction
Ansible - IntroductionAnsible - Introduction
Ansible - Introduction
 
ProxySQL for MySQL
ProxySQL for MySQLProxySQL for MySQL
ProxySQL for MySQL
 
Best Practices for Running PostgreSQL on AWS - DAT314 - re:Invent 2017
Best Practices for Running PostgreSQL on AWS - DAT314 - re:Invent 2017Best Practices for Running PostgreSQL on AWS - DAT314 - re:Invent 2017
Best Practices for Running PostgreSQL on AWS - DAT314 - re:Invent 2017
 
Apache Hudi: The Path Forward
Apache Hudi: The Path ForwardApache Hudi: The Path Forward
Apache Hudi: The Path Forward
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用について
 
PostgreSQL and JDBC: striving for high performance
PostgreSQL and JDBC: striving for high performancePostgreSQL and JDBC: striving for high performance
PostgreSQL and JDBC: striving for high performance
 
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdfMySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
 
모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)
 
Spark autotuning talk final
Spark autotuning talk finalSpark autotuning talk final
Spark autotuning talk final
 
Nginx Architecture
Nginx ArchitectureNginx Architecture
Nginx Architecture
 
PL22 - Backup and Restore Performance.pptx
PL22 - Backup and Restore Performance.pptxPL22 - Backup and Restore Performance.pptx
PL22 - Backup and Restore Performance.pptx
 
patroni-based citrus high availability environment deployment
patroni-based citrus high availability environment deploymentpatroni-based citrus high availability environment deployment
patroni-based citrus high availability environment deployment
 
Spark Autotuning Talk - Strata New York
Spark Autotuning Talk - Strata New YorkSpark Autotuning Talk - Strata New York
Spark Autotuning Talk - Strata New York
 
웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우
 
Presto At Arm Treasure Data - 2019 Updates
Presto At Arm Treasure Data - 2019 UpdatesPresto At Arm Treasure Data - 2019 Updates
Presto At Arm Treasure Data - 2019 Updates
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
 

En vedette

Melhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlMelhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlHelder Lopes
 
Dicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPDicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPAlmir Neto
 
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de SitesCaelum
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoLuiz Junior
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX Sérgio Souza Costa
 
Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsGilmar Pupo
 
Ws 01-install appserv+xampp+konfigurasi file
Ws 01-install appserv+xampp+konfigurasi fileWs 01-install appserv+xampp+konfigurasi file
Ws 01-install appserv+xampp+konfigurasi fileWahiduna ElQudsy
 
Princípios de Administração de Dados
Princípios de Administração de DadosPrincípios de Administração de Dados
Princípios de Administração de DadosGilberto Rodrigues
 
Artigo benchmark moodle apresentação
Artigo benchmark moodle   apresentaçãoArtigo benchmark moodle   apresentação
Artigo benchmark moodle apresentaçãoMilton Azara
 
Rpm e yum - gerenciamento de pacotes
Rpm e yum - gerenciamento de pacotesRpm e yum - gerenciamento de pacotes
Rpm e yum - gerenciamento de pacotesFábio dos Reis
 
Arquitectura de computadores power point
Arquitectura de computadores power pointArquitectura de computadores power point
Arquitectura de computadores power pointfayl1905
 
Linux tuning for PostgreSQL at Secon 2015
Linux tuning for PostgreSQL at Secon 2015Linux tuning for PostgreSQL at Secon 2015
Linux tuning for PostgreSQL at Secon 2015Alexey Lesovsky
 
Paginas Web
Paginas WebPaginas Web
Paginas WebNekeysi
 
Inteligência Artificial Reduzindo o Custo na Cobrança
Inteligência Artificial Reduzindo o Custo na CobrançaInteligência Artificial Reduzindo o Custo na Cobrança
Inteligência Artificial Reduzindo o Custo na CobrançaZildo Damasio
 
Projeto Nota Fiscal de Serviços Eletrônica NFS-e Montes Claros - MG
Projeto Nota Fiscal de Serviços Eletrônica NFS-e Montes Claros - MGProjeto Nota Fiscal de Serviços Eletrônica NFS-e Montes Claros - MG
Projeto Nota Fiscal de Serviços Eletrônica NFS-e Montes Claros - MGFernando Oliveira
 
Propaganda e publicidade livro manual criacao_publicitaria
Propaganda e publicidade livro manual criacao_publicitariaPropaganda e publicidade livro manual criacao_publicitaria
Propaganda e publicidade livro manual criacao_publicitariaProfessor Sérgio Duarte
 

En vedette (20)

Melhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlMelhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySql
 
Dicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPDicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHP
 
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX
 
Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com Jenkins
 
Funcao PHP
Funcao PHPFuncao PHP
Funcao PHP
 
Ws 01-install appserv+xampp+konfigurasi file
Ws 01-install appserv+xampp+konfigurasi fileWs 01-install appserv+xampp+konfigurasi file
Ws 01-install appserv+xampp+konfigurasi file
 
Princípios de Administração de Dados
Princípios de Administração de DadosPrincípios de Administração de Dados
Princípios de Administração de Dados
 
Artigo benchmark moodle apresentação
Artigo benchmark moodle   apresentaçãoArtigo benchmark moodle   apresentação
Artigo benchmark moodle apresentação
 
Rpm e yum - gerenciamento de pacotes
Rpm e yum - gerenciamento de pacotesRpm e yum - gerenciamento de pacotes
Rpm e yum - gerenciamento de pacotes
 
Manual completo de_html 01
Manual completo de_html 01Manual completo de_html 01
Manual completo de_html 01
 
Arquitectura de computadores power point
Arquitectura de computadores power pointArquitectura de computadores power point
Arquitectura de computadores power point
 
Linux tuning for PostgreSQL at Secon 2015
Linux tuning for PostgreSQL at Secon 2015Linux tuning for PostgreSQL at Secon 2015
Linux tuning for PostgreSQL at Secon 2015
 
Paginas Web
Paginas WebPaginas Web
Paginas Web
 
Inteligência Artificial Reduzindo o Custo na Cobrança
Inteligência Artificial Reduzindo o Custo na CobrançaInteligência Artificial Reduzindo o Custo na Cobrança
Inteligência Artificial Reduzindo o Custo na Cobrança
 
Projeto Nota Fiscal de Serviços Eletrônica NFS-e Montes Claros - MG
Projeto Nota Fiscal de Serviços Eletrônica NFS-e Montes Claros - MGProjeto Nota Fiscal de Serviços Eletrônica NFS-e Montes Claros - MG
Projeto Nota Fiscal de Serviços Eletrônica NFS-e Montes Claros - MG
 
Mecatronica atual 60
Mecatronica atual 60Mecatronica atual 60
Mecatronica atual 60
 
Propaganda e publicidade livro manual criacao_publicitaria
Propaganda e publicidade livro manual criacao_publicitariaPropaganda e publicidade livro manual criacao_publicitaria
Propaganda e publicidade livro manual criacao_publicitaria
 

Similaire à Tuning Apache/MySQL/PHP para desenvolvedores

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
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctoolse-Setorial
 
Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Bruno Pedro
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressJulian Fernandes
 
Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaHenrique Lima
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveiselliando dias
 
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
 
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
 
Fisl banco de dados no sql de código aberto
Fisl   banco de dados no sql de código abertoFisl   banco de dados no sql de código aberto
Fisl banco de dados no sql de código abertoSuissa
 
Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneosFernando Ike
 
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...Marlon Willrich
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 
Adequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema cargaAdequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema cargaLucas Brasilino
 
Desenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveisDesenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveisManuel Lemos
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxThiago Paes
 

Similaire à Tuning Apache/MySQL/PHP para desenvolvedores (20)

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]
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctools
 
Vamos conversar sobre cache
Vamos conversar sobre cacheVamos conversar sobre cache
Vamos conversar sobre cache
 
Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Cache e Performance (in portuguese)
Cache e Performance (in portuguese)
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPress
 
Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinada
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 
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
 
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?
 
Fisl banco de dados no sql de código aberto
Fisl   banco de dados no sql de código abertoFisl   banco de dados no sql de código aberto
Fisl banco de dados no sql de código aberto
 
Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneos
 
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Vagrant + Puppet
Vagrant + PuppetVagrant + Puppet
Vagrant + Puppet
 
Adequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema cargaAdequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema carga
 
Desenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveisDesenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveis
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com Nginx
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 

Plus de Douglas V. Pasqua

Graph API - Desenvolvimento para Facebook
Graph API - Desenvolvimento para FacebookGraph API - Desenvolvimento para Facebook
Graph API - Desenvolvimento para FacebookDouglas V. Pasqua
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDouglas V. Pasqua
 
Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php segurosDouglas V. Pasqua
 
Unicode: Os segredos da Codificação de Caracteres
Unicode: Os segredos da Codificação de CaracteresUnicode: Os segredos da Codificação de Caracteres
Unicode: Os segredos da Codificação de CaracteresDouglas V. Pasqua
 
Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3Douglas V. Pasqua
 

Plus de Douglas V. Pasqua (9)

Graph API - Desenvolvimento para Facebook
Graph API - Desenvolvimento para FacebookGraph API - Desenvolvimento para Facebook
Graph API - Desenvolvimento para Facebook
 
Web Services RESTful
Web Services RESTfulWeb Services RESTful
Web Services RESTful
 
Introdução APIs RESTful
Introdução APIs RESTfulIntrodução APIs RESTful
Introdução APIs RESTful
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
 
Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php seguros
 
Unicode: Os segredos da Codificação de Caracteres
Unicode: Os segredos da Codificação de CaracteresUnicode: Os segredos da Codificação de Caracteres
Unicode: Os segredos da Codificação de Caracteres
 
The Facebook Plataform
The Facebook PlataformThe Facebook Plataform
The Facebook Plataform
 
Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3
 
Segurança Web com PHP5
Segurança Web com PHP5Segurança Web com PHP5
Segurança Web com PHP5
 

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 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.
  • 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 ● Permite sobrescrever configurações do Apache através dos arquivos .htaccess:
  • 6. Apache, AllowOverride ● Caso habilitado, Apache terá que checar por arquivos .htaccess em todas requisições. ● Sempre que possível, manter desabilitado.
  • 7. Apache, AllowOverride ● Transportar as configurações de .htaccess para o arquivo de configuração principal
  • 8. Apache ● AllowOverride ● ExtendedStatus ● SymLinks ● KeepAlive ● MaxClients ● Outras Dicas
  • 9. 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.
  • 11. Apache, mod_status ● Manter o parâmetro ExtendedStatus para Off, para melhor performance.
  • 12. Apache ● AllowOverride ● mod_status ● SymLinks ● KeepAlive ● MaxClients ● MaxRequestsPerChild ● Outras Dicas
  • 13. 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)
  • 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.
  • 17. Apache ● AllowOverride ● ExtendedStatus ● SymLinks ● KeepAlive ● MaxClients ● Outras Dicas
  • 18. 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
  • 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 consultas lentas ● 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 consultas lentas ● max_connections ● table_cache ● query_cache_size ● thread_cache_size
  • 26. 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.
  • 27. MySQL, max_connections ● Para aumentar o número de conexões simultâneas: [mysqld] ... max_connections = 200
  • 28. 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
  • 29. MySQL ● Monitorando consultas lentas ● max_connections ● table_cache ● query_cache_size ● thread_cache_size
  • 30. 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.
  • 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 consultas lentas ● max_connections ● table_cache ● query_cache_size ● thread_cache_size
  • 33. 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.
  • 34. MySQL, query_cache_size [mysqld] ... query_cache_size = 128M
  • 35. MySQL ● Monitorando consultas lentas ● max_connections ● table_cache ● query_cache_size ● thread_cache_size
  • 36. 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%
  • 37. 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.
  • 40. MySQL, thread_cache_size Threads_created: 1294 Connections: 7321961 100 - ((1294 / 7321961) * 100) = 99,98%
  • 41. 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
  • 42. 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.
  • 43. 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
  • 45. PHP, Profiler ● webgrind - https://code.google.com/p/webgrind/ ○ Ferramenta para análise de logs do xdebug profiler ● config.php:
  • 47. 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
  • 48. PHP, memcached ● Sistema de cache de alta perfomance com dados armazenados em memória.
  • 49. 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.
  • 50. PHP, memcached ● Inserindo e obtendo dados do cache:
  • 51. PHP, memcached ● Limpando dados do cache:
  • 52. 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
  • 53. 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
  • 54. 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
  • 55. 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
  • 57. PHP, APC ● Interface Administrativa:
  • 58. PHP, APC ● Usando APC como cache de dados:
  • 59. 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
  • 60. 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.
  • 61. PHP, Zend_Cache ● Adapters ○ APC ○ Dba ○ Filesystem ○ Memcached ○ Memory ○ WinCache ○ ZendServerDisk ○ ZendServerShm
  • 62. PHP, Zend_Cache ● Exemplo de utilização do Zend_Cache
  • 63. 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
  • 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 ● Windows Azure ○ 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 ● 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
  • 74. 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
  • 75. Obrigado por assistir! Para saber mais: http://dpasqua.wordpress.com douglas.pasqua@gmail.com