Você está na página 1de 58

Apache V8 em um Fusquinha 67

Diogo Leal [estranho] diogo@diogoleal.com

Quem?
Nome: Diogo Leal [estranho] Rio de Janeiro RJ Sysadmin da HostGator Brasil Usurio Linux desde 1998 Grupo de usurios Slackware e Arduinrio slackwarebrasil.org arduinrio.cc

Aonde?

HostGator
Fundada em 2002. Uma das cinco maiores empresas de hospedagem no mundo; ~8000 Servidores; ~300 funcionrios; ~4 milhes de domnios; Escritrios: Estados Unidos e Brasil

No perca o foco

O usurio quer acessar um site leve, design bonito com bom contedo e prtico.

Tpicos

Mexendo no cap" ou Otimizando o site para o cliente. "Tunando o motor" ou Ajustando o Apache no Servidor.

O Apache
Apache surgiu em 1995 partir de uma srie de "patches" sobre o NCSA; e da a origem de seu nome: "A patchy server". O HTTPD Apache um dos inumeros projetos da Apache Software Foundation (ASF). Instalado em mais de 10 milhes de servidores. Cerca de 60% dos servidores Web.

http://news.netcraft.com/

Metodologia

Compare a velocidade do seu site com o do

concorrente; Faa as comparaes com os que esto na mesma

regio que o seu; Quando necessrio, limpe o cache do browser; Use um link com uma velocidade comum de internet;

Metodologia
Seja metdico e lembre que quase nada feito da noite para o dia. Faa o teste; Anote o resultado; Faa a alterao; Teste novamente.

Metodologia
No mximo, altere 2 itens e realize o ciclo de testes. Altere o sistema operacional, depois de finalizado o primeiro, siga para o Apache, em seguida, DNS, Banco de Dados, etc.

Seja limpinho
Voc realmente precisa do Xorg, cups, samba em um servidor web? Se possivel e/ou necessrio, divida os servio para cada servidor. Faa nota das alteraes que voc realizou para que outros no futuro possam entender a alterao e melhorar.

Kernel

Kernel padro das distribuies so compilados para utilizar qualquer tipo de hardware. Pense na possibilidade de recompilar o kernel com apenas o que util para voc.

Alguns ajustes do Kernel


Sysctl? Ok?
fs.file-max=262144 4096 MB de RAM => 4096/4=1024 1024*256=262144 vm.min_free_kbytes = 204800 vm.lower_zone_protection = 1024 vm.page-cluster = 20 vm.swappiness = 200 vm.vm_vfs_scan_ratio = 2

Disco
Sistema de arquivos: XFS, ext3 ou ext4 Algumas distros so conservadoras em relao a configurao de disco. Analisar e realizar os ajustes com uma ferramenta como o sdparm uma boa soluo. Tenha pelo menos 25% livre em cada partio.

Modificao da instalao padro Apache


Remova os mdulos do Apache que voc no utiliza para salvar um pouco de memria; Distribuies como Centos, o apache vem habilitado com 52 mdulos, no Slackware o nmero aumenta para 64. necessrio isso tudo?

Quanto menor for a quantidade de requisies, menor ser a utilizao do servidor.

Opes do httpd.conf
EnableSendfile On

EnableMmap On

HostNameLookups off Nas opes Allow e Deny utilizar ips ao invs de DNS

Opes do httpd.conf

Options FollowSymLinks #Options SymLinksIfOwnerMatch

.htaccess
Ao acessar site.com/casa/condado/meudocelar.html que esta com o DocumentRoot definido para /var/www/site/bilbo/, a busca ser realizada nos seguintes diretrios:
/.htaccess /var/.htaccess /var/var/.htaccess /var/var/site/.htaccess /var/var/site/bilbo/.htaccess /var/var/site/bilbo/casa/.htaccess /var/var/site/bilbo/casa/condado/.htaccess

.htaccess
Desativando o .htaccess AllowOverride All -> AllowOverride none Habilitando para somente o diretrio desejado <directory /var/www/site/bilbo> AllowOverrride All </directory>

Realizando cache no cliente


Imagina um site que possui um total de 615kb com 46 imagens. Quando este site acessado pela primeira vez realizado um total de 62 requisies ao servidor. Imagine 300 acessos simultneos em um perodo de 5 minutos?

mod_deflate
Comprime os arquivos de forma automtica, diminuindo o tamanho das pginas que so enviadas ao cliente. Aumenta bem pouco o processamento no servidor, mas como as pginas esto com tamanho menor, diminui a quantidade de requisies ao servidor. Compactar arquivos de imagens e pdfs? T maluco mermo?

mod_deflate

LoadModule deflate_module modules/mod_deflate.so <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/plain text/html text/xml \ text/css application/javascript DeflateCompressionLevel 9 </IfModule>

Cabealho Expires
O browser salva uma cpia do arquivo no cache local do cliente e s atualiza, quando expira a validade do arquivo.
ExpiresActive On <FilesMatch "\. (gif|jpg|js|css)$"> ExpireDefault "access plus 1 years" </FileMatch>

ETags

Foi criado para implementar um mecanismo mais flexvel para validar entidades do que a data de ltima modificao.

ETags
So tipicamentes construdas usando atributos que as tornam nicas para um servidor especifico. Para quem hospeda o site somente em um servidor, a performance no afetada.

ETags

Para desativar Etags (caso deseja) <IfModule mod_headers.c> Header unset ETag </IfModule> FileETag None

Keep alive
Keep Alive -> Permite que mltiplas conexes sejam realizadas atravs de uma nica conexo. MaxKeepAliveRequests -> Indica quantas requisies keepalive devem ser permitidas atravs de uma mesma conexo. KeepAliveTimeout -> quanto tempo uma determinada conexo sera mantida aberta aps no serem recebidas mais requisies.

Prefork X Worker

Prefork utiliza processos e mais memria, sendo mais seguro. Worker utiliza threads e menos memria.

Prefork
Quantidade de memria / Tamanho do processo = MaxClients <IfModule prefork.c> StartServers MinSpareServers MaxSpareServers ServerLimit MaxClients 15 15 15 256/Max 256 4000

MaxRequestsPerChild </IfModule>

Worker
<IfModule worker.c> StartServers MaxClients MinSpareThreads MaxSpareThreads ThreadsPerChild MaxRequestsPerChild </IfModule> 2 150 25 75 25 0

Definir utilizao CPU e Processos

RLimitCPU 150 170 RLimitNPROC 25 40 RLimitMEM 500000000 611000000

CGI
mod_fcgid
O mod_fcgid uma alternativa de maior velocidade ao mod_cgi e mod_cgid e at o mod_php.

Cache do servidor
Evite que uma pgina seja gerada a cada acesso. O Apache permite que voc utilize duas formas de cache: Memria e Disco

mod_mem_cache
<IfModule mod_mem_cache.c> CacheEnable mem / MCacheSize 4096 MCacheMaxObjectCount 100 MCacheMinObjectSize 1 MCacheMaxObjectSize 2048 </IfModule>

mod_disk_cache

CacheEnable disk / CacheRoot /var/www/cache CacheDefaultExpire 3600 CacheMinExpire 3600

Gerenciando o cache

htcacheclean usado para manter o tamanho do cache no limite desejado.


htcacheclean -d -n -t -p /diretorio/cache -l 10M -i

Cache de pginas "dinmicas

CacheEnable disk / CacheRoot /var/www/cache CacheIgnoreCacheControl On CacheDefaultExpire 600

Memcached
Desenvolvido inicialmente para o livejornal.com Utilizado para acelerar aplicaes web dinmicas. Realizando um cache de dados para aliviar a sobrecarga no banco de dados.

mod_limitipconn
Mdulo que permite limitar um nmero mximo de conexes simultaneas por endereo IP.

http://dominia.org/djao/limitipconn2.html

mod_cband
Mdulos simples para limitar o uso de banda de usurios, virtual hosts e destinatrios. Este mdulo pode limitar a velocidade de download e a quantidade de requisies. http://codee.pl/cband_documentation.html

mod_cband
LoadModule cband_module <VirtualHost *:80> ... CBandSpeed 1024 10 30 CBandRemoteSpeed 10kb/s 3 2 CBandClassRemoteSpeed googlebot_class 20kb/s 2 3 </VirtualHost> modules/mod_cband.so

mod_cband

<Location /cband-status> SetHandler cband-status </Location> <Location /cband-status-me> SetHandler cband-status-me </Location>

Proxy

Em grandes estruturas comum possuir servidores Apache atuando como Proxys. Eles realizam o redirecionamento da requisio para outro servidor.

Proxy server

ProxyPass /site/ destino ProxyPassReverse /site/ destino

mod_proxy_balancer
Realiza o balanceamento de carga entre vrios servidores backend. <Proxy balancer://balanco> BalancerMember http://ip:porta BalancerMember http://ip:porta </Proxy> ProxyPass /site balancer://balanco

Apache Traffic Server


Apache Traffic Server um rpido, escalvel e extensvel servidor proxy cache. Desenvolvido pelo Yahoo!, foi doado para a Apache Foundation. http://trafficserver.apache.org/

Proxy Reverso

Cache Hierrquico

Content Delivery Networks

um transparente proxy cache, que incrementa velocidade, segurana e estabilidade ao seu site.

Web CDN Site

AB - ApacheBench
Ferramenta simples para analise de performance
diogo@bree% ab -v -q -c 100 -n 1000 \ http://mordor.diogoleal.com/index.html

Ferramentas
time wget S O /dev/null http://site flood => httpd.apache.org/test Httperf => http://sf.net/projects/httperf/ curl-loader => http://curl-loader.sf.net Apachetop => http://freshmeat.net/projects/apachetop

Plugins para Firefox


Speed page Firebug Yslow

Monitorando o site em tempo real


mod_status
Permite visualizar informaes simples, mas em tempo real das atividades do site.
LoadModule status_module modules/mod_status.so <Location /server-status> SetHandler server-status Order allow,deny Allow from all </Location> ExtendedStatus On

Dicas
No precisa ser programador, mas aprenda a ler e entender cdigos que programadores @#$%&! escrevem. Desabilitar quando necessrio bots de buscas como google e Yahoo!. Incluir captcha em formulrios ajuda a diminuir a quantidade de requisies simultaneas. Separar contedo dinamico e contedo esttico.

O importante ser feliz


Caso o Apache no satisfaa as suas necessidades:

Cherokee ngnix lighthttpd Khttpd

Eu ouvi algum falar em IIS?

Dvidas

This work is licensed under the Creative Commons Attribution 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.