Vous êtes sur la page 1sur 48

Apache em Sites de Alto Trfego: Aspectos Internos de Performance/Escalabilidade

Rivalino Matias Jr.


PerformanceLab/UFSC - K4B Consulting

Porto Alegre - Junho/2005


6 Frum Internacional Software Livre

Apache em Sites de Alto Trfego

AGENDA

Ecossistema Internet & Web; Desempenho do HTTP (1.0/1.1) O Apache Web Server Apache em sites de Alto Trfego; Consideraes Finais;

6 Frum Internacional Software Livre

Introduo

Internet & Web

Em 1989 Tim Berners-Lee inventou a WWW, cujo propsito foi ter uma infra-estrutura padro para o compartilhamento de informaes; Desde ento, a Web tem sido largamente usada para garantir independncia de plataforma; Atualmente, a Web est no centro da infra-estrutura de TI das organizaes; Um dos principais componentes desta infra-estrutura o Web Server;

6 Frum Internacional Software Livre

Ecossistema WEB

Modelo de Comunicao: Client <-> Server;

Cliente = Browser; Servidor = Web Server;

As regras desta comunicao esto definidas no protocolo HTTP (L7); A formatao dos dados que trafegam entre Browser e Web Server realizada pela linguagem HTML; Outros elementos j fazem parte deste Ecossistema (BD, AppServer, LB, outros).

6 Frum Internacional Software Livre

Ecossistema Web

Componentes / Arquiteturas (1)


Usurios

INFRAESTRUTURA 2-Tier

Internet Link Web Server Dial-up, xDSL, FR, ... HTTP

6 Frum Internacional Software Livre

Ecossistema Web

Componentes / Arquiteturas (2)


Usurios

INFRAESTRUTURA 2-Tier

Internet Link Web Server Dial-up, xDSL, FR, ... HTTP SQL Database

6 Frum Internacional Software Livre

Ecossistema Web

Componentes / Arquiteturas (3)


Usurios

INFRAESTRUTURA 3-Tier

Internet Link Web Server Dial-up, xDSL, FR, ... HTTP SQL HTTP(S), (S)RMI, CORBA, outros App Server Database

6 Frum Internacional Software Livre

Ecossistema Web

Componentes / Arquiteturas (4)


Usurios

INFRAESTRUTURA n-Tier + HA

Internet Link Web Server App Server Farm Farm HTTP SQL HTTP(S), (S)RMI, CORBA, outros Database Farm

Dial-up, xDSL, FR, ...

6 Frum Internacional Software Livre

Performance na Web

Entregar o contedo solicitado dentro de um tempo de resposta aceitvel para a quantidade de clientes planejada; Aceitvel => 15 seg. (Nielsen/Netratings); 12 seg. (Keynote Systems Inc.); A taxa de resposta (req/seg) outra mtrica interessante para avaliar o desempenho de servidores Web; Os objetivos do seu Web Site determinaro sua necessidade de performance/escalabilidade.

6 Frum Internacional Software Livre

Performance na Web

Tempo de resposta dos 10 maiores Web Sites de eCommerce do WSJ


Rank 1 2 3 4 5 6 7 8 9 10
6 Frum Internacional Software Livre

Tempo de Resp. (seg.) EddieBauer 9,26 WebSite OfficeDepot Amazon WalMart BestBuy JCPenny Costco OfficeMax Target Sears 10,07 11,46 14,64 14,96 15,21 15,80 20,62 23,27 23,45

Fonte: Keynote Systems performance indexes.

Performance na Web

O que deve ser analisado ?

So diversos os fatores que influenciam na performance de um Web Site:

Tcnicos:

Canal/Link de comunicao (bandwidth); Hardware (Processador, Memria, Discos, NIC, ...) Software (SO, Web Server, CGI/SSI, BD, FW, ... ) Contedo (Esttico, Dinmico, Imagens, Vdeo, ...)

Outros: Pblico-alvo, sazonalidade, foco do negcio, etc.

6 Frum Internacional Software Livre

Performance com HTTP (1.0 / 1.1)


A comunicao na Web baseada no protocolo HTTP; Este segue um modelo client/server; Ambas as verses so baseadas no modelo client/server; Relacionado a performance, as principais melhorias introduzidas na verso 1.1 foram:

Conexo Persistente; Pipelining.

6 Frum Internacional Software Livre

Performance com HTTP (1.0 / 1.1)

Sesso HTTP + TCP


CLIENTE
SYN (a )
N(a)) K(SY b), AC SYN(

WEB SERVER
Estabelecimento de Conexo TCP

ACK(S YN (b) )

Sesso HTTP

HTTP Reque st e q .) CK (R A onse Resp

) FIN(a

ACK ( Resp.+ FIN(a) ) FIN(b)


(b)) K(FIN AC

Encerramento de Conexo TCP

6 Frum Internacional Software Livre

Performance com HTTP (1.0 / 1.1)

Acesso nas Verses 1.0 / 1.1


artigo.html

Apache Web Server


Sendo o mais popular Web Server da atualidade, o Apache httpd tem sido utilizado em diversas pesquisas cientficas voltadas para a avaliao de performance em Web Servers. Neste sentido, este trabalho apresenta um estudo ..
10 9 8 7 6 5 4 3 2 1 0 Row 1 Row 2 Row 3 Row 4
Column 1 Column 2 Column 3 Main title

Fig1.png

logo.jpg

6 Frum Internacional Software Livre

Performance com HTTP (1.0 / 1.1)

Browser

Anatomia de uma sesso HTTP:


ver. 1.0 c/ acesso serializado

TCP SYN HTTP GET TCP FIN TCP SYN HTTP GET

Web Server artigo.html

logo.jpg
TCP FIN TCP SYN HTTP GET

Fig1.png
TCP FIN

6 Frum Internacional Software Livre

Performance com HTTP (1.0 / 1.1)

Anatomia de uma sesso HTTP:


ver. 1.0 c/ conexes paralelas
Browser
TCP SYN HTTP GET

Web Server

artigo.html S
TCP FIN

logo.jpg F F

Fig1.png

6 Frum Internacional Software Livre

Performance com HTTP (1.0 / 1.1)

Anatomia de uma sesso HTTP:


ver. 1.1 c/ conexo persistente e requisies serializadas

Browser
TCP SYN HTTP GET

Web Server

artigo.html
HTTP GET

logo.jpg
HTTP GET

Fig1.png
TCP FIN

6 Frum Internacional Software Livre

Performance com HTTP (1.0 / 1.1)

Anatomia de uma sesso HTTP:


ver. 1.1 c/ conexo persistente e pipelining

Browser
TCP SYN
HTTP GET

Web Server

artigo.html
HTTP GET ( logo.jpg ) HTTP GET ( fig1.gif )

logo.jpg Fig1.png
TCP FIN

6 Frum Internacional Software Livre

Performance com HTTP (1.0 / 1.1)

Outros exemplos...
RH 9, Mozilla 1.4.3, http://www.apache.org
[root@devel]# netstat -n Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address tcp 0 0 192.168.1.2:32799 tcp 0 0 192.168.1.2:32798 Foreign Address 209.237.227.195:80 209.237.227.195:80 State ESTABLISHED ESTABLISHED

RH 9, Mozilla 1.4.3, http://www.apache.org- aps fechar o browser.


[root@devel]# netstat -n Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address tcp 0 0 192.168.1.2:32799 tcp 0 0 192.168.1.2:32798 Foreign Address 209.237.227.195:80 209.237.227.195:80 State TIME_WAIT TIME_WAIT

RH 9, Mozilla 1.4.3, http://www.google.com


[root@devel]# netstat -n Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address tcp 0 0 192.168.1.2:32806 Foreign Address 64.233.161.104:80 State ESTABLISHED

6 Frum Internacional Software Livre

Performance com HTTP (1.0 / 1.1)

Outros exemplos...
RH 9, Mozilla 1.4.3, http://www.ufsc.br - 4 conexes.
[root@devel]# netstat -n Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address tcp 0 0 192.168.1.2:32856 tcp 0 0 192.168.1.2:32857 tcp 0 0 192.168.1.2:32854 tcp 0 0 192.168.1.2:32855 Foreign Address 150.162.1.150:80 150.162.1.150:80 150.162.1.150:80 150.162.1.150:80 State ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED

Windows 2000 Prof., IE 6, http://www.ufsc.br - 7 conexes.


C:\>netstat -n Active Connections Proto Local Address TCP 192.168.1.2:1076 TCP 192.168.1.2:1077 TCP 192.168.1.2:1078 TCP 192.168.1.2:1079 TCP 192.168.1.2:1080 TCP 192.168.1.2:1081 TCP 192.168.1.2:1082 Foreign Address 150.162.1.150:80 150.162.1.150:80 150.162.1.150:80 150.162.1.150:80 150.162.1.150:80 150.162.1.150:80 150.162.1.150:80 State ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED

6 Frum Internacional Software Livre

Performance com HTTP (1.0 / 1.1)

Outros exemplos...
Win2000 Prof., IE 6, http://www.uol.com.br
C:\>netstat -n Active Connections Proto Local Address TCP 192.168.1.2:1095 TCP 192.168.1.2:1096 TCP 192.168.1.2:1097 TCP 192.168.1.2:1099 TCP 192.168.1.2:1100 TCP 192.168.1.2:1104 TCP 192.168.1.2:1105 TCP 192.168.1.2:1107 TCP 192.168.1.2:1110 Foreign Address 200.221.7.37:80 200.221.7.37:80 200.221.7.37:80 200.221.7.38:80 200.221.7.38:80 200.221.7.38:80 200.221.7.38:80 200.221.8.115:80 200.221.8.115:80 State ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED

Win2000 Prof., Mozilla 1.4.3, http://www.uol.com.br


C:\ netstat -n Active Connections Proto Local Address TCP 192.168.1.2:1303 TCP 192.168.1.2:1304 TCP 192.168.1.2:1306 TCP 192.168.1.2:1309 Foreign Address 200.221.7.38:80 200.221.7.38:80 200.221.8.115:80 200.221.8.115:80 State ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED

6 Frum Internacional Software Livre

Apache Web Server

Em Abril/1995 a primeira verso do Apache foi liberada, baseada no code base do NSCA httpd server v. 1.3; Esta release (v 0.7) incorporava muitos patches da comunidade para o cdigo do NSCA, de onde surgiu seu nome: A PAtCHy HTTPD um dos projetos da The Apache Software Foundation (http://www.apache.org); Atualmente ocupa o posto de Web Server mais usado na Internet (Netcraft, 2005).

6 Frum Internacional Software Livre

Apache Web Server

Utilizao de Web Servers


Apache Microsoft Sun NCSA Zeus

Fonte: Netcraft Jun/2005 (http://www.netcraft.com)

6 Frum Internacional Software Livre

Apache Web Server

Performance / Escalabilidade

O projeto Apache ( httpd ) tradicionalmente priorizou os seguintes aspectos:


Portabilidade; Segurana; Flexibilidade; Aderncia aos padres abertos;

At a verso 1.3, performance e escalabilidade no eram as principais prioridades do projeto; Apesar de ser o mais utilizado, o Apache no o Web Server mais performtico em termos de benchmarks !

6 Frum Internacional Software Livre

Apache Web Server

Comparativo de Performance
Req/seg. x Conexes simultneas

Apache

6 Frum Internacional Software Livre

Fonte: ACME Labs. (http:://www.acme.com)

Apache Web Server

Performance / Escalabilidade (cont.)

Sobre Benchmarks, vale ressaltar:

Benchmarks != Real World Latncia da rede vs. Capacidade do Web Server;

Quantos sites voc conhece tem um link WAN de 100Mbps ?

Devido ao nmero de componentes envolvidos, certamente estes resultados so distantes da sua realidade; Realize os seus prprios testes !!!

6 Frum Internacional Software Livre

Apache Web Server

Aspectos Arquiteturais

ver. 1.3:

Baseada em processos (Unix/Linux); Threads na plataforma Windows NT;

ver. 2.0 (abril/2002):

Introduz o modelo de processos MPM (Multi-Processing Modules); Utiliza a system call sendfile(2) para envio e recebimento de contedo esttico (html, gif, jpg, pdf, ...); Suporta a system call mmap(2) para mapeamento de arquivos em memria;

6 Frum Internacional Software Livre

Apache Web Server

Aspectos Arquiteturais (cont.)

MPMs (v. 2.0):

Responsveis por: Gerenciar as portas de comunicao, aceitar conexes, alocar threads/processos para atendimento das requisies; Possibilitam customizaes especficas para cada plataforma de SO (ex. mpm_winnt); Alternativas: prefork, perchild, worker, threadpool, leader, beos, mpmt_os2, outros....; Os MPMs perchild, leader e threadpool so experimentais, portanto inadequados para ambientes de produo.

6 Frum Internacional Software Livre

Apache Web Server

Aspectos Arquiteturais (cont.)

Dois exemplos de MPM


prefork
Pai

worker
Pai

Filho1

Filho2

Filho3

Filhon

Filho1

Filho2

Filho3

Filhon

thr1 ... thrn thr1 ... thrn thr1 ... thrn thr1 ... thrn

6 Frum Internacional Software Livre

Apache Web Server

Avaliao de Performance

Benchmark realizado por de Andrew Ho (http://www.zeuscat.com/andrew/work/aprbench/)

Web Server: Dual PIII, 700MHz, 1 GB RAM, Solaris x86; Gerador de Carga: Configurao idntica ao Web Server; Contedo esttico: Arquivo de 1 KB. Instalao do httpd sem customizaes (out-of-box); A cada 30 segundos o nvel de concorrncia foi incrementado em 1.

6 Frum Internacional Software Livre

Apache Web Server

Avaliao de Performance (cont.)

6 Frum Internacional Software Livre

Apache Web Server

Avaliao de Performance (cont.)

6 Frum Internacional Software Livre

Apache Web Server

Avaliao de Performance (cont.)


Utilizando processor bind

6 Frum Internacional Software Livre

Apache Web Server

Avaliao de Performance (cont.)

Benchmark realizado pelo IBM Linux Technology Center (LTC)

Server: IBM xSeries Netfinity 8500R

CPU: (8) Pentium III-700MHz RAM: 9 GB Swap: 2 GB Red Hat 7.3 Web server: Apache httpd 2.0.47 Gerador de carga: WPT 1.9.4

6 Frum Internacional Software Livre

Apache Web Server

Avaliao de Performance (cont.)

Comparao do Apache 2.0 com Kernel 2.4 e 2.6

6 Frum Internacional Software Livre

Apache Web Server

Avaliao de Performance (cont.)

Aspectos relativos ao contedo:

No se preocupe com contedo esttico; As pginas dinmicas so/sero o seu gargalo !!!

Teste com contedo esttico vs. dinmico:


Durao: 8 horas; Apache httpd: 2.0.46; Red Hat Enterprise Linux AS 2.0 (kernel 2.4.21); MPM prefork (200 processos httpd); Pginas de 196 Kbytes e Carga: 90%.

6 Frum Internacional Software Livre

Apache Web Server

Avaliao de Performance (cont.)

Consumo de Memria (pg. esttica)


200 175 150 125 100 75 50 25 0 Horas 0:00
RAM (MBytes)

1:00

1:58

2:58

3:58

4:58

5:58

6:58

7:58

Fonte: palestrante.

6 Frum Internacional Software Livre

Apache Web Server

Avaliao de Performance (cont.)

Consumo de Memria (pg. dinmica)


500 450 400 350 300 250 200 150 100 50 0

E8 E7

Horas

RAM (MBytes)

0:00

1:00

1:57

2:57

3:57

4:57

5:57

6:57

7:57

Fonte: palestrante.

6 Frum Internacional Software Livre

Apache em sites de Alto Trfego

Apache em sites de Alto Trfego

Qual arquitetura do Apache utilzar (1.3 ou 2.0) ?

httpd 2.0.x;

Qual MPM (worker / prefork) ?

worker customizado (avalie preliminarmente);


2.6.x; Com hardware SMP/SMT(HT), utilize os recursos de CPU affinity !

Qual verso do Kernel ?

Schedutils (taskset, chrt); http://rlove.org/schedutils/

6 Frum Internacional Software Livre

Apache em sites de Alto Trfego

Apache em sites de Alto Trfego (cont.)

Evite a qualquer custo o swapping:

Limite o nr. de processos / threads por servidor; Utilize mais de um servidor escalando horizontalmente:

DNS round robin; IP load balancer: LVS/IPVS, Red Hat Cluster Suite, Cisco Local Director, F5 BigIP, outros...;

Avalie a utilizao de um servidor especializado (ex. thttpd) para servir todo contedo esttico (ex. imagens, zip, pdf, etc.);

6 Frum Internacional Software Livre

Apache em sites de Alto Trfego

Apache em sites de Alto Trfego (cont.)

Planeje a infra-estrutura do seu servidor Apache, definindo os requisitos que devem ser atendidos:

tempo de resposta, nr. de conexes simultneas, perfil / caracterizao do trfego, etc.

No esquea de ser generoso ao planejar sua capacidade de memria RAM; A seguir, algumas recomendaes de configurao para o httpd.conf:

6 Frum Internacional Software Livre

Apache em sites de Alto Trfego

Apache em sites de Alto Trfego (cont.)

Antes de tudo, compile o httpd como worker:

./configure with-mpm=worker ... Habilite o uso de mmap(2):

No httpd.conf:

EnableMMAP on MMapFile /usr/local/.../foto.jpg

Habilite o uso de sendfile(2):

EnableSendfile on

Modifique o valor default do ListenBacklog:

ex. ListenBacklog 5000

6 Frum Internacional Software Livre

Apache em sites de Alto Trfego

Apache em sites de Alto Trfego (cont.)

Mais httpd.conf ...:

Evite o custo de criar e remover processos com frequncia, definindo MinSpare=MaxClients e MaxSpare=0

worker:

MinSpareThreads=MaxClients MaxSpareThreads=0

prefork:

MinSpareServers=MaxClients MaxSpareServers=0

MaxRequestsPerChild=0

6 Frum Internacional Software Livre

Apache em sites de Alto Trfego

Apache em sites de Alto Trfego


Exemplo de seo worker do httpd.conf
# worker MPM <IfModule worker.c> ServerLimit StartServers MaxClients MinSpareThreads MaxSpareThreads ThreadsPerChild MaxRequestsPerChild </IfModule>

50 50 500 500 0 10 0

6 Frum Internacional Software Livre

Apache em sites de Alto Trfego

Apache em sites de Alto Trfego


Exemplo de seo prefork do httpd.conf
# prefork MPM <IfModule prefork.c> ServerLimit 500 StartServers 500 MaxClients 500 MinSpareServers 500 MaxSpareServers 0 MaxRequestsPerChild 0 </IfModule>

6 Frum Internacional Software Livre

Apache em sites de Alto Trfego

Apache em sites de Alto Trfego (cont.)

Mais httpd.conf ...:

Utilize Conexes persistentes/pipelining


KeepAlive On MaxKeepAliveRequests 0

Em casos de memory leaks, programe a reinicializao peridica do httpd:

killall -HUP httpd; (no recicla!) killall -9 httpd; httpd; (causa downtime) apachectl restart; (recicla c/zero-downtime!)

6 Frum Internacional Software Livre

Apache em sites de Alto Trfego

Concluses

Voc precisa entregar em 15 seg. ? Avalie os requisitos de capacidade do seu site; Comece definindo suas necessidades em termos de taxa/tempo de resposta e nr. de conexes simultneas; Use o log do Apache e outras medies para caracterizar a utilizao do seu site; Hands-on !

6 Frum Internacional Software Livre

Obrigado !
RIVALINO@K4B.COM.BR RIVALINO@DEPS.UFSC.BR

6 Frum Internacional Software Livre

Vous aimerez peut-être aussi