Tuning Apache MySQL e PHP
date post
25-Sep-2015Category
Documents
view
222download
5
Embed Size (px)
description
Transcript of Tuning Apache MySQL e PHP
Tuning Apache/MySQL/PHPpara Desenvolvedores
By Douglas V. PasquaZend Certified Engineer / LPI / SCJP
douglas.pasqua@gmail.com
Objetivos
Dicas de Tuning para Apache/MySQL e PHP. Parmetros de configurao para tuning de Apache e MySQL Instalao e configurao de ferramentas de tuning. Anlise de cdigos PHP. Identifcar Gargalos. Voltado para desenvolvedores.
Tpicos Apache
AllowOverride mod_status SymLinks KeepAlive MaxClients Outras dicas
Apache
AllowOverride mod_status SymLinks KeepAlive MaxClients Outras Dicas
Apache, AllowOverride
Permite sobrescrever configuraes do Apache atravs dos arquivos .htaccess:
Apache, AllowOverride
Caso habilitado, Apache ter que checar por arquivos .htaccess em todas requisies.
Sempre que possvel, manter desabilitado.
Apache, AllowOverride
Transportar as configuraes de .htaccess para o arquivo de configurao 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 parmetro ExtendedStatus para Off, para melhor performance.
Apache
AllowOverride mod_status SymLinks KeepAlive MaxClients MaxRequestsPerChild Outras Dicas
Apache, SymLinks Diz ao Apache para seguir/no seguir links simblicos.
Manter desabilitado faz com que o Apache realize checagens
extras. (verificando se o arquivo acessado um link ou no)
Apache
AllowOverride ExtendedStatus SymLinks KeepAlive MaxClients MaxRequestsPerChild Outras Dicas
Apache, KeepAlive
KeepAlive. Permite mltiplas requisies por uma mesma conexo TCP Melhora desempenho do site. Reduz utilizao de CPU. Aumenta consumo de memria.
Apache, KeepAlive
Apache
AllowOverride ExtendedStatus SymLinks KeepAlive MaxClients Outras Dicas
Apache, MaxClients
Determina o limite mximo de conexes simultneas no Apache.
Aumentar tambm o ServerLimit quando > 256 Padro 256 Setar antes de MaxClients
Apache, MaxClients
MaxClients (RAM - memria outros processos) / (mdia do processo apache)
RAM 6109184 Kb (free -m) Mdia de Memria do Apache
12000kb (ps -ylC apache2 --sort:rss) Reservar memria para outros processos
819200kb
MaxClients = (6109184 - 819200) / 12000 MaxClients = 441
Apache
AllowOverride ExtendedStatus SymLinks KeepAlive MaxClients Outras Dicas
Apache, Outras Dicas
mod_deflate Habilita compresso de dados. Ideal para arquivos estticos (html, css, javascript, xml, etc.) Maioria dos navegadores modernos suportam nativamente.
Separar contedo esttico de contedo dinmico. Usar um servidor Http mais leve para contedo esttico.
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 nmero mximo de conexes simultneas no MySQL. Aumentar de acordo com a necessidade.
Receber Too many connections significa que excedeu esse
limite. Aumentar esse parmetro influncia:
Quantidade de Memria disponvel. Quantidade de memria usada por cada conexo. Nmero de file descriptors abertos.
MySQL, max_connections
Para aumentar o nmero de conexes simultneas: [mysqld] ... max_connections = 200
MySQL, max_connections
Para aumentar o nmero de conexes simultneas: [mysqld] ... max_connections = 200
Para diagnsticos das conexes em processo no momento: mysql> show processlist\G
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 nmero de tabelas abertas em cache para
todas threads. Est diretamente relacionado com o parmetro max_connections:
table_cache = max_connections * n n o nmero mximo de tabelas usadas na query em que voc
possui mais Joins no sistema.
MySQL, table_cache
table_cache limitado pelo nmero de file descriptors disponiveis pelo S.O.
Utiliza mais memria, porm melhora a performance.
Lembre-se que precisa reservar extra file descriptors para tabelas temporrias e arquivos.
Verificar nmero 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 memria alocada para guardar resultado das queries. Por padro o valor 0 (Desabilitado).
Os valores para esse parmetro devem ser mltiplos de 1024.
Cuidado para no setar para um valor muito alto. As threads
precisam fazer lock no cache durante updates. O valor mnimo 40Kb, para alocao 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. (Conexes persistentes). Diminuir o mximo possvel a criao de novas threads.
Equao para testar a eficincia do cache:
100 - ((Threads_created / Connections) * 100) = 99%
MySQL, thread_cache_size
Equao para testar a eficincia do cache: 100 - ((Threads_created / Connections) * 100) Threads_created Nmero de Threads criadas desde que o MySQL foi iniciado.
Connections Nmero total de conexes 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 aplicao PHP memcached Opes de aceleradores de cdigo php Usando APC (Alternative PHP Cache) Caching com Zend_Cache PHP e Computao em Nuvem
PHP, Profiler
O Profiler do xdebug permite identificar gargalhos e/ou partes mais lentas de sua aplicao.
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 anlise de logs do xdebug profiler
config.php:
PHP, Profiler
PHP
Identificando gargalos em aplicao PHP memcached Opes de aceleradores de cdigo php Usando APC (Alternative PHP Cache) Caching com Zend_Cache PHP e Computao em Nuvem
PHP, memcached
Sistema de cache de alta perfomance com dados armazenados em memria.
PHP, memcached
Sistema de cache de alta perfomance com dados armazenados em memria.
Principal propsito:
Diminuir a carga em banco de dados de aplicaes web.
Instalvel atravs de uma extenso PECL.
PHP, memcached
Inserindo e obtendo dados do cache:
PHP, memcached
Limpando dados do cache:
PHP
Identificando gargalos em aplicao PHP memcached Opes de aceleradores de cdigo php Usando APC (Alternative PHP Cache) Caching com Zend_Cache PHP e Computao em Nuvem
PHP, aceleradores de cdigo
APC - Alternative PHP Cache. Ideal para WebServers muito carregados e aplicaes com
muitos componentes. Software Livre Mantido pelos desenvolvedores do core do PHP. Distribudo atravs de um pacote PECL. Previso para estar integrado junto com o PHP verso 5.4 Compatibilidade com Zend Optimizer Fcil administrao Suporte para Windows Suporte para PHP 5.4
PHP, aceleradores de cdigo
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 Opo comercial
PHP
Identificando gargalos em aplicao PHP memcached Opes de aceleradores de cdigo php Usando APC (Alternative PHP Cache) Caching com Zend_Cache PHP e Computao em Nuvem
PHP, APC
PHP, APC
Interface Administrativa:
PHP, APC
Usando APC como cache de dados: