Apache Performance Tuning

45 %
55 %
Information about Apache Performance Tuning
Technology

Published on February 28, 2014

Author: msungaila

Source: slideshare.net

Description

Dicas e truques para melhorar a performance do Apache com pequenas configurações que podem fazer uma grande diferença.

Apache Performance Tuning 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 1

Agenda ● Warning ● Configuração básica ● Persistent connections RAM ● .htaccess Módulos padrão ● SymLinks ● mod_mem_cache ● ● mod_disk_cache ● Logs ● ● 21.fev.2014 Carregar javascripts depois da página Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 2

Warning "Premature optimization is the root of all evil." Donald Knuth 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 3

Configuração básica ● ● ● A configuração padrão do Apache é bem versátil Usando servidores standard, o Apache pode atender a alguns milhares de conexões por dia sem otimizações Essa configuração pode ser melhorada ampliando ou reduzindo os recursos disponíveis por meio de seus módulos 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 4

Otimização ● Como medir a performance do Apache? – – httperf – ● Apache HTTP server bench marking tool The Grinder, a Java Load Testing Framework Não há outra forma de medir essa performance? – 21.fev.2014 A mais importante métrica que pode ser verificada é a percepção do usuário Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 5

Otimização ● 21.fev.2014 Por onde começar? Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 6

RAM ● Siga aquele ditado que diz: Quanto mais, melhor! ● ● ● Se possível tenha o máximo de memória que o servidor, o sistema operacional e seu bolso permitirem Mais memória permite um maior número de processos ou threads Maior número de requests simultâneos 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 7

Módulos padrão ● ● ● A carga de módulos usa mais memória e ativa sequências de verificação adicionais Inclui rotinas a serem executadas em todas as chamadas Vários módulos que vêm configurados por padrão só são usados em casos específicos 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 8

Módulos padrão ● Desative módulos desnecessários ● Alguns módulos para verificar se você precisa deles: – authn_alias_module – authn_anon_module – authn_dbm_module – authnz_ldap_module – authz_dbm_module – authz_owner_module – ext_filter_module – file_cache_module – info_module – ldap_module – mem_cache_module – status_module – speling_module – usertrack_module – proxy_module – proxy_balancer_module – proxy_ftp_module – proxy_http_module – proxy_ajp_module – proxy_connect_module 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 9

Módulos padrão ● ● O principal objetivo em desativar módulos não é liberar memória mas sim reduzir o número de rotinas executadas em cada request A redução no consumo de memória acontece como um bônus 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 10

mod_mem_cache ● ● É útil para criar cache de conteúdo gerado localmente ou quando o apache atua como um proxy reverso Este módulo cria um cache independente por processo – não compartilhável entre processos 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 11

mod_disk_cache ● ● ● Também é usado para criar cache de conteúdo gerado localmente ou quando o apache atua como um proxy reverso O cache é criado em uma pasta especificada e pode ser acessado por todos os processos/ threads do apache Ao usar mod_disk_cache configure um disco separado, de alta performance – SSD se possível – , como cache 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 12

mod_disk_cache ● ● ● ● Quantidade de pastas para cache pode ser configurada com CacheDirLength e CacheDirLevels Cuidado com CacheDirLength para não criar poucas pastas ou uma quantidade muito grande Prefira uma estrutura com CacheDirLevels=1 para reduzir o tempo de limpeza do cache Execute o daemon htcacheclean para evitar o acumulo desnecessário de arquivos sem uso 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 13

mod_disk_cache ● Como configurar mod_disk_cache LoadModule disk_cache_module modules/mod_disk_cache.so <IfModule mod_cache.c> <IfModule mod_disk_cache.c> CacheEnable disk / CacheIgnoreHeaders Set-Cookie CacheRoot "/var/cache/httpd_cache" CacheDirLength 2 CacheDirLevels 1 </IfModule> <IfModule> ● Habilitar o daemon htcacheclean htcacheclean -d30 -n -t -p /var/cache/httpd_cache -l 512M 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 14

mod_disk_cache ● Como saber se a página foi servida a partir do cache ou processada? LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" "%{Age}o"" combined 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 15

Logs ● ● ● ● Uso intensivo de I/O Deve usar um disco separado do disco do conteúdo do apache Preferencialmente discos SAS – não precisa ser SSD Considere o uso do log do sistema 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 16

Persistent connections ● Vantagens – – ● É mais eficiente manter uma conexão ativa para enviar um segundo arquivo Atender a mais de um request por conexão Desvantagens – Pode prejudicar em sites onde só há solicitações de um único arquivo – Mantém uma conexão ativa por mais tempo 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 17

Persistent connections ● Opções de configuração LoadModule headers_module modules/mod_headers.so KeepAlive on MaxKeepAliveRequests 100 KeepAliveTimeout 15 <ifModule mod_headers.c> Header set Connection keep-alive </ifModule> 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 18

.htaccess ● ● Usado para tornar mais flexível a configuração de sites no Apache Deve ser habilitado no httpd.conf pela tag AllowOverride ● A tag AllowOverRide força o Apache a fazer varreduras em todas as pastas a partir de / à procura de arquivos .htaccess 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 19

.htaccess ● Com esta configuração DocumentRoot /var/www/html <Directory /> AllowOverride all </Directory> ● Ao acessar este site, o Apache é forçado a procurar por .htaccess em: /.htaccess /var/.htaccess /var/www/.htaccess /var/www/html/.htaccess 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 20

SymLinks ● Há duas opções para permitir o uso de links simbólicos FollowSymLinks SymLinksIfOwnerMatch ● A segunda opção é mais segura porém, do ponto de vista de performance, é extremamente onerosa. 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 21

SymLinks ● Com esta configuração DocumentRoot /vaw/www/html <Directory /> Options SymLinksIfOwnerMatch </Directory> ● Ao acessar este site, o Apache é forçado a executar uma função lstat() em: /var /var/www /var/www/html /var/www/html/index.html 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 22

Para os desenvolvedores 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 23

Carregar js depois da página ● ● ● ● Não use async, defer ou posicione os scripts no final da página: isso não funciona Javascripts que não estão envolvidos na exibição inicial da página só devem ser carregados depois da página completa Coloque em um arquivo separado, scripts que monitoram clicks, posição de mouse e coisas assim Use o código mostrado a seguir ao final da sua página, antes da tag </body> 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 24

Carregar js depois da página ● Exemplo prático <script type="text/javascript"> function downloadJSAtOnload() { var element = document.createElement("script"); element.src = "scripts.js"; document.body.appendChild(element); } if (window.addEventListener) window.addEventListener("load", downloadJSAtOnload, false); else if (window.attachEvent) window.attachEvent("onload", downloadJSAtOnload); else window.onload = downloadJSAtOnload; </script> 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 25

Outras otimizações ● Apache Extended Status ● Swapiness ● Buffer Size ● Max Open Files ● PHP Safe Mode ● etc... 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 26

Perguntas? 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 27

Muito Obrigado Marcos Sungaila marcos@savant.com.br 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 28

Add a comment

Related presentations

Related pages

Apache Performance Tuning – Thomas-Krenn-Wiki

Serverlimitierungen. Der Parameter MaxRequestWorkers (bis 2.3.13 MaxClients) bestimmt wieviel Apache Prozesse und somit Client Verbindungen zugelassen ...
Read more

Apache Performance Tuning - Apache HTTP Server

Apache 2.x is a general-purpose webserver, designed to provide a balance of flexibility, portability, and performance. Although it has not been ...
Read more

Apache Performance Tuning - Apache Web Server with PHP and ...

Apache Performance Tuning Guide. ... WampDeveloper Pro, Performance Optimized Advanced, High-Performance Web Server Software using Apache, PHP, MySQL - for ...
Read more

Apache Performance Tuning - Thomas-Krenn-Wiki

Server Limitations. The MaxClients setting determines the number of Apache processes, and thereby the number of client connections, that can be made (pre ...
Read more

Hochleistungs-Apache: Performance-Tuning @ huschi.net

Linux-Server-Admin-FAQ - Probleme, Fragen und Antworten zu: Suse,Debian,Ubuntu mit Plesk/Confixx und Postfix,Qmail,Sendmail,Apache,MySQL,Datenbank
Read more

Configuring Apache for Maximum Performance

Configuring Apache for maximum performance is tricky, ... 8 http://httpd.apache.org/docs/2.2/misc/perf-tuning.html. 9 Linux Server Hacks by Rob Flickenger.
Read more

mod_perl: Performance Tuning - Apache Software Foundation

mod_perl documentation: An exhaustive list of various techniques you might want to use to get the most performance possible out of your mod_perl server ...
Read more

Performance Tuning - Welcome to the Apache Struts project

Performance tuning. The following are some tips and tricks to squeeze the most performance out of Struts 2.
Read more

Performance tuning - Welcome to the Apache ManifoldCF ...

In order to get the most out of ManifoldCF, performance-wise, there are a few things you need to know. First, you need to know how to configure the project ...
Read more

25 Apache Performance Tuning Tips - Network & IT Systems ...

We all know and love Apache. Its great, it allows us to run websites on the Internet with minimal configuration and administration.
Read more