Sunteți pe pagina 1din 73

Universidade do Estado do Rio de Janeiro

Instituto de Matemtica e Estatstica


Departamento de Informtica e Cincia da Computao
AVAIA!"# E REDU!"# D# $EM%# DE RE&%#&$A
DE &I&$EMA& 'E(
Autor: Victor Marconi Arouca Ri)eiro
RI# DE JA*EIR#
JU+# , -./-
Ava0iao e Reduo do $empo de Resposta de &istemas
'e)
Victor Marconi Arouca Ribeiro
Projeto Final submetido ao corpo docente do Instituto de Matemtica e Estatstica da
Universidade do Estado do Rio de Janeiro UERJ! como parte dos re"uisitos necessrios #
obten$%o do &rau de 'ac(arel em In)ormtica e *ecnolo&ia da In)orma$%o+
'anca E,aminadora:
Pro)-: ......................................
Ale,andre /0tajnber& 1rientador
Pro)essor IME2UERJ
Pro)3: ......................................

Pro)essor IME2UERJ
Pro)3: ......................................

Pro)essor IME2UERJ
Rio de Janeiro! 45 de Jun(o de 4564
7 min(a )amlia
A1radecimentos
A&rade$o aos meus pais! irm% e av8s pelo es)or$o em min(a educa$%o! desde os
primeiros anos 0elando pelo meu aprendi0ado e mel(oria como pessoa! seja me orientando ou
)ornecendo a estrutura necessria+
A&rade$o tamb9m aos pro)essores da UERJ em &eral pelo trabal(o reali0ado+ :oje
percebo "ue a"uelas aulas "ue pareciam muito abstratas e te8ricas eram necessrias e com
objetivos prticos+
E em especial aos pro)essores Ant;nio <arlos Ritto! =aniel 1lair Ferreira! Marinil0a
'runo de <arval(o e Ale,andre /0tajnber&! por suas aten$>es especiais no decorrer do curso e
neste trabal(o+
Resumo
RI'EIR1! Victor Marconi Arouca+ Avaliao e Reduo do Tempo de Resposta de Sistemas
Web+ ?5 )+ In)ormtica e *ecnolo&ia da In)orma$%o! Universidade do Estado do Rio de
Janeiro! 4564+
Aplica$>es desenvolvidas para a @eb se tornaram comuns+ Em vista disso! 9 necessrio se
preocupar com a e,periAncia do usurio nesse ambiente+ Um dos crit9rios "ue podem ser
utili0ados para medir a "ualidade dessa e,periAncia 9 o tempo de resposta da aplica$%o+ 1
Yahoo! publicou um conjunto de recomenda$>es para desenvolvedores com a )inalidade de
redu0ir o tempo de resposta em sistemas Beb+ 1 objetivo deste trabal(o 9 implementar e
avaliar tais recomenda$>es e veri)icar sua e)iccia+
%a0avras2c3ave4 *empo de Resposta+ 1timi0a$%o de /istemas @eb+ /ervidores @eb+
Avalia$%o de =esempen(o+
&umrio
Introdu$%o+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++6
<aptulo 6 C *empo de Resposta na Avalia$%o de Um /ite++++++++++++++++++++++++++++++++++++++++++++++++++++++++D
<aptulo 4 C @orld @ide @eb: <onceitos e Funcionamento++++++++++++++++++++++++++++++++++++++++++++++++++++++E
4+6 C :Fperte,t MarGup Han&ua&e++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++E
4+4 C Uni)orm Resource Hocator++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++I
4+J C 1 :Fperte,t *rans)er Protocol++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++K
4+J+6 C Re"uisi$%o do <liente++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++K
4+J+4 C Resposta do /ervidor+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++65
4+J+J C M9todos :**P++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++6D
4+J+D C <8di&os de /tatus++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++6D
4+D C Ar"uitetura de Um /istema @eb+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++6L
<aptulo J C Fatores =eterminantes da Velocidade de Um /ite+++++++++++++++++++++++++++++++++++++++++++++++6I
J+6 C <omunica$%o Entre <liente e /ervidor+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++6I
J+6+6 C Roteadores Intermedirios+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++6I
J+6+4 C 'anda da <omunica$%o+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++6K
J+4 C 1 *aman(o do Recurso+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++6K
J+J C *empo do /ervidor++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++6K
<aptulo D C Ambiente de Avalia$%o+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++44
D+6 C 1 Merador de <ar&a+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++44
D+6+6 C Apac(e'enc(+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++4J
D+6+4 C :**Per)+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++4J
D+6+J C @@@::Mec(ani0e++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++4J
D+6+D C /eletores <//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++4L
D+4 C In)raestrutura+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++4?
D+4+6 C @ordpress++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++4?
D+4+4 C Virtuali0a$%o++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++4?
<aptulo L C *9cnicas de Redu$%o do *empo de Resposta+++++++++++++++++++++++++++++++++++++++++++++++++++++++4K
L+6 C Fa0er Menos Re"uisi$>es :**P+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++4K
L+4 C Adicionar <abe$al(o E,pires++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++4K
L+J C <on)i&urar E*a&s++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++J5
L+D C <omprimir os <omponentes+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++J5
L+L C <olocar <// e Java/cript em Ar"uivos E,ternos+++++++++++++++++++++++++++++++++++++++++++++++++++++++J5
L+? C <onsultas ao =N/+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++J5
L+I C Mini)icar Java/cript e <//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++J6
L+K C 1timi0ar as Ima&ens++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++J6
<aptulo ? C Resultados++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JJ
?+6 C <ompara$%o do tempo de resposta de diversos BorGloads+++++++++++++++++++++++++++++++++++++++++JJ
?+6 C <ompara$%o do tempo de resposta de diversos BorGloads+++++++++++++++++++++++++++++++++++++++++JJ
?+4 C Escalamento Vertical+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JL
?+4 C Escalamento Vertical+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JL
?+J C 1timi0a$>es de /ouders++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JE
?+J C 1timi0a$>es de /ouders++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JE
<onclus%o++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++D6
Re)erAncias 'iblio&r)icas++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++D4
Ane,o I C /cripts para 'enc(marG+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++DD
Ane,o II C <asos de Uso++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++LL
Ane,o III C <on)i&ura$%o das M"uinas Virtuais++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++L?
Ane,o IV C Instala$%o do /istema++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++LE
ista de 5i1uras
Fi&ura 6: E,emplo da ta& OtitleO de)inindo o elemento OtitleO++++++++++++++++++++++++++++++++++++++++++++++++++++E
Fi&ura 4: /inta,e da URH+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++I
Fi&ura J: /inta,e simpli)icada da URH++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++I
Fi&ura D: Estrutura de uma re"uisi$%o :**P+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++K
Fi&ura L: E,emplo de re"uisi$%o :**P de uma p&ina :*MH+++++++++++++++++++++++++++++++++++++++++++++++++K
Fi&ura ?: Estrutura da resposta :**P++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++65
Fi&ura E: E,emplo de resposta :**P de uma p&ina :*MH++++++++++++++++++++++++++++++++++++++++++++++++++65
Fi&ura I: =ocument 1bject Model P=1MQ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++66
Fi&ura K: <omponente e,terno Pima&emQ re)erenciado na p&ina++++++++++++++++++++++++++++++++++++++++++++66
Fi&ura 65: E,emplo de re"uisi$%o :**P para um componente da p&ina+++++++++++++++++++++++++++++++66
Fi&ura 66: Vis%o do site R=Net ap8s todos os componentes serem carre&ados+++++++++++++++++++++++64
Fi&ura 64: Firebu& listando todos os componentes de uma p&ina++++++++++++++++++++++++++++++++++++++++++6J
Fi&ura 6J: E,emplo de tecnolo&ias encontradas no Frontend e 'acGend++++++++++++++++++++++++++++++++6L
Fi&ura 6D: *abela de rotas do servidor++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++6?
Fi&ura 6L: *rec(o :*MH de um template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++6?
Fi&ura 6?: Resultado da consulta ao banco de dados+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++6E
Fi&ura 6E: :*MH )inali0ado ap8s a substitui$%o das ta&s do template++++++++++++++++++++++++++++++++++++6E
Fi&ura 6I: E,emplo de uso do pro&rama pin& para veri)icar a latAncia para o endere$o
&6+&lobo+com+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++6K
Fi&ura 6K: Veri)ica$%o do tempo de resposta com Firebu& ++++++++++++++++++++++++++++++++++++++++++++++++++++++45
Fi&ura 45: <ar&a real sendo &erada por vrios clientes++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++44
Fi&ura 46: <ar&a sendo &erada arti)icialmente+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++4J
Fi&ura 44: Usera&ents criados pelo &erador de car&a++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++4D
Fi&ura 4J: /elecionando te,to de uma p&ina atrav9s de /eletores <//+++++++++++++++++++++++++++++++++4L
Fi&ura 4D: Vis%o do ambiente de teste++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++4E
Fi&ura 4L: <ompara$%o do tempo de resposta da aplica$%o para diversos BorGloads+ Plano da
VP/ S654DT+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JJ
Fi&ura 4?: Uso de <PU e mem8ria para 6L clientes+ Plano de (ospeda&em: O654DO+++++++++++++++JJ
Fi&ura 4E: Uso de <PU e mem8ria para J5 clientes+ Plano de (ospeda&em: O654DO+++++++++++++++JD
Fi&ura 4I: Uso de <PU e mem8ria para DL clientes+ Plano de (ospeda&em: O654DO+++++++++++++++JD
Fi&ura 4K: Uso de <PU e mem8ria para ?5 clientes+ Plano de (ospeda&em: O654DO+++++++++++++++JD
Fi&ura J5: Uso de <PU e mem8ria para EL clientes+ Plano de (ospeda&em: O654DO+++++++++++++++JD
Fi&ura J6: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: O654DO+++++++++++++++JD
Fi&ura J4: <ompara$%o do tempo de resposta da aplica$%o para um BorGload de ?5 clientes
entre D planos de VP/+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JL
Fi&ura JJ: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: O654DO+++++++++++++++JL
Fi&ura JD: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: O6LJ?O+++++++++++++++JL
Fi&ura JL: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: O45DIO+++++++++++++++J?
Fi&ura J?: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: OD5K?O+++++++++++++++J?
Fi&ura JE: <ompara$%o entre os tempos de resposta da aplica$%o implementando as
recomenda$>es de /ouders+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JE
Fi&ura JI: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: O654DO+
<on)i&ura$>es padr>es++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JE
Fi&ura JK: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: O654DO+ Menos
Re"uisi$>es+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JE
Fi&ura D5: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: O654DO+ /em
cabe$al(o Oe,piresO+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JI
Fi&ura D6: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: O654DO+ /em
compress%o++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JI
Fi&ura D4: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: O654DO+ /em
Ar"uivos Javascript e <// e,ternos+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JI
Fi&ura DJ: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: O654DO+ =uas
consultas =N/+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JI
Fi&ura DD: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: O654DO+
Mini)ica$%o de Javascript e <//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JK
Fi&ura DL: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: O654DO+ /em
E*a&s+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JK
Fi&ura D?: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: O654DO+ Ima&ens
otimi0adas e sprites+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JK
Fi&ura DE: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: O654DO+ Ima&ens
otimi0adas+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JK
Fi&ura DI: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: O654DO+ *odas as
otimi0a$>es+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++D5
Fi&ura DK: Uso de <PU e mem8ria para K5 clientes+ Plano de (ospeda&em: O654DO+ Nen(uma
otimi0a$%o+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++D5
ista de $a)e0as
*abela 6: =i)iculdades encontradas no uso da Internet pelos brasileiros+++++++++++++++++++++++++++++++++++D
*abela 4: /i&ni)icado dos c8di&os de status :**P pelo primeiro d&ito++++++++++++++++++++++++++++++++++45
*abela J: Percentual do tempo &asto no bacGend de 65 &randes sites++++++++++++++++++++++++++++++++++++++4I
*abela D: Padr>es para seletores <//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++J4
*abela L: <on)i&ura$%o das m"uinas virtuais utili0adas+++++++++++++++++++++++++++++++++++++++++++++++++++++++++LL
ista de &i10as e &m)o0os
AJAU Asynchronous JavaScript and XM
A@/ Ama!on Web Services
'lo& Web lo"
<PU #entral $rocessin" %nit
<// #ascadin" Style Sheet
=N/ &omain 'ame System
:*MH (yperte)t Mar*up an"ua"e
:**P (yperte)t Trans+er $rotocol
I<MP ,nternet #ontrol Messa"e $rotocol
IP ,nternet $rotocol
J/1N JavaScript -b.ect 'otation
J/ JavaScript
G' /ilo 0ytes
M' Me"a 0ytes
HAN ocal Area 'et1or*
Gbps /ilo bits per second
Mbps Me"a bits per second
/E1 Search 2n"ine -ptimi!ation
/VH Structured 3uery an"ua"e
//: Secure Shell
*<P Transmission #ontrol $rotocol
URH %ni+orm Resource ocator
VP/ 4irtual $rivate Server
@J< World Wide Web #onsortium
@@@ World Wide Web
60ossrio
'acGend: <amada do so)tBare "ue n%o 9 acessado diretamente pelo usurio Pe,+: o so)tBare
"ue e,ecuta no servidorQ+
'ooGmarGlet: Um aplicativo em Java/cript arma0enado como URH de um )avorito+ Vuando
clicado! eles adicionam uma )uncionalidade a um site+
E0ine: <ontra$%o de Selectronic ma&a0ineT+ Uma publica$%o peri8dica "ue n%o utili0a papel+
W distribuda eletronicamente em )ormatos como P=F ou :*MH+
Frontend: <amada do so)tBare "ue intera&e com o usurio+ En&loba tanto a inter)ace com o
usurio "uanto componentes au,iliares # inter)ace+
Inbound linGs: HinGs e,ternos Pde outros domniosQ apontando para o site+
/earc( En&ine 1ptimi0ation: Atividade de otimi0ar as p&inas de um site para "ue )i"uem
mais bem posicionadas pelos mecanismos de busca+
/creen /crapin&: Heitura pro&ramada de p&inas Beb! sem interven$%o (umana+
/pider: /o)tBare "ue nave&a pelas p&inas automaticamente coletando dados+
*a&: W uma palavrac(ave ou termo associado a uma in)orma$%o+ As ta&s :*MH! em
particular! s%o palavras c(ave envolvidas pelos sinais de X e Y+
Introduo
A disponibilidade de acesso # Internet cresceu rapidamente na Zltima d9cada+ Em
4565! cerca de D5[ da popula$%o brasileira tin(a acesso # Rede PI*U! 4565Q+ Percebendo
isso! empresas das mais diversas reas buscam )ormas de se bene)iciar dessa tecnolo&ia para
atrair clientes e &erar oportunidades de ne&8cios+ Um dos meios mais elementares para
alcan$ar esse )im 9 manter um Beb site+
No entanto! assim como em outras mdias! a maneira como a empresa se apresenta
ao cliente pode impactar tanto positivamente "uanto ne&ativamente sua ima&em+ W importante
n%o s8 estar presente na @eb como tamb9m tornar a e,periAncia do usurio positiva+ :
vrios crit9rios para avaliar o "u%o a&radvel 9 um site! como usabilidade! aparAncia!
conteZdo e velocidade+ :aja vista "ue a maior reclama$%o dos usurios 9 acessar sites "ue
demoram a carre&ar P<E*I<+br! 4565Q! este trabal(o trata de problemas envolvendo o tempo
de resposta C o "ue 9! o "ue contribui para sua varia$%o! como medir e redu0ir+
1 senso comum recomenda mel(orar a velocidade )ocandose na otimi0a$%o do
servidor C con)i&urar ndices nos bancos de dados! usar al&oritmos mais e)icientes! alterar a
lin&ua&em de pro&rama$%o ou! at9 mesmo! mi&rar para uma m"uina de maior capacidade+
Por9m! e,aminando o tempo de carre&amento das p&inas e seus componentes! percebese
"ue a maior parte da demora ocorre ap8s o documento :*MH ter sido criado! ou seja! ap8s
todo o processamento ter ocorrido+ <erca de I5[ do tempo de resposta est associado aos
componentes de +rontend P/ouders! 455EQ+
/teve /ouders! ent%o )uncionrio do Yahoo!! veri)icando "ue a maior parte do tempo
era &asto no +rontend! publicou 6D recomenda$>es
6
de como se redu0ir o tempo de resposta+
/%o recomenda$>es simples de serem implementadas! "ue basicamente alteram con)i&ura$>es
relacionadas ao +rontend e n%o a)etam a ar"uitetura ou a l8&ica da aplica$%o+
Este trabal(o se prop>e a avaliar o tempo de resposta de um sistema Beb tpico
reali0ando medi$>es e implementando duas t9cnicas de redu$%o: 6Q escalamento
verticalmente! isto 9! aumentando as especi)ica$>es de (ardBare da m"uina servidora\ 4Q
otimi0a$%o do +rontend! aplicando al&umas das recomenda$>es de /ouders+
6 Inicialmente publicadas no site do ]a(oo^ =eveloper NetBorG P(ttp:22developer+Fa(oo+com2
per)ormance2rules+(tmlQ! essas recomenda$>es deram ori&em a dois livros! "ue e,pandem a discuss%o acerca
a diminui$%o do tempo de resposta: :i&( Per)ormance @eb /ites P(ttp:22 stevesouders+com2(pBs2rules+p(pQ e
Even Faster @eb /ites P(ttp:22stevesouders+com2e)Bs2Q+
6
No caso 6Q escalamento vertical! apenas as especi)ica$>es do servidor )oram
alteradas! acrescentando &radualmente mais tempo de <PU e "uantidade de mem8ria+ *odas
as con)i&ura$>es padr>es dos so)tBares )oram mantidas+
No caso 4Q otimi0a$%o do +rontend! as especi)ica$>es do servidor )oram mantidas e
al&umas con)i&ura$>es do +rontend alteradas+ As recomenda$>es )oram testadas
individualmente e em conjunto com as demais+
=entre as op$>es de ambiente de e,ecu$%o disponveis! optouse por utili0ar
m"uinas virtuais! pois )ornecem controle inte&ral dos so)tBares instalados e permitem "ue
recursos de (ardBare sejam adicionados )acilmente+ As m"uinas )oram instaladas em um
datacenter
4
de amplo uso comercial+
Em ambos os casos! a vers%o padr%o do sistema operacional Ubuntu /erver 64+5D
H*/ )oi instalada+ 1s Znicos so)tBares acrescentados )oram o servidor Beb PApac(eQ! a
aplica$%o Beb P@ordpressQ e o so)tBare &erenciador de banco de dados PMF/VHQ+
Para simular o comportamento dos clientes! outra m"uina virtual )oi construda+
Nela )oi instalado o so)tBare &erador de car&a! "ue enviou re"uisi$>es para recursos do
servidor+
Ao )inal dos testes! )oi reali0ada a compara$%o entre as duas aborda&ens e veri)icada
"ual 9 mais vantajosa+
4 Foi escol(ido o datacenter da Hinode P(ttp:22BBB+linode+com2Q
4
Nos pr8,imos captulos! o tema ser discutido da se&uinte )orma:
<aptulo I: *empo de Resposta na Avalia$%o de um /ite C Fornece ra0>es
econ;micas e sociais para se preocupar com a velocidade de um site+ /%o apresentados relatos
de )uncionrios do Moo&le e da Ama0on sobre o impacto na arrecada$%o em )un$%o da
velocidade dos sites+ Al9m disso! s%o apresentados ar&umentos relativos # usabilidade do site
e os limites de tempo sensveis aos usurios+
<aptulo II: @orld @ide @eb: <onceitos e Funcionamento C Apresenta a lin&ua&em
:*MH e demonstra como )unciona o ciclo de uma re"uisi$%o :**P+ /%o apresentados os
m9todos! cabe$al(os e c8di&os de status do :**P e o )uncionamento tanto do cliente "uanto
do servidor+
<aptulo III: Fatores =eterminantes da Velocidade de um /ite C =e)ine as unidades e
medidas de velocidade normalmente utili0adas em redes de computadores e detal(a "uais s%o
os componentes do sistema "ue in)luem na varia$%o do tempo de resposta+
<aptulo IV: Ambiente de Avalia$%o C =escreve a in)raestrutura construda! e,plica a
metodolo&ia adotada e introdu0 os so)tBares utili0ados para medir o tempo de resposta+
<aptulo V: Redu$%o do *empo de Resposta C =escreve as recomenda$>es de /teve
/ouders para redu0ir o tempo de respostas e como )oram implementadas no trabal(o+
<aptulo VI: Resultados C Apresenta os resultados com &r)icos "ue mostram tanto o
comportamento dos clientes "uanto do servidor "uando submetidos # car&a+
<aptulo VII: <onclus%o C <onsidera$>es )inais sobre o trabal(o e perspectivas sobre
a avalia$%o e redu$%o do tempo de resposta+
J
Captu0o / 7 $empo de Resposta na Ava0iao de Um
&ite
Em pes"uisa condu0ida pelo <entro de Estudos sobre as *ecnolo&ias da In)orma$%o
e <omunica$%o P<E*I<+br! 4565Q sobre o uso das tecnolo&ias da in)orma$%o e da
comunica$%o no 'rasil! revelouse "uais s%o as principais di)iculdades encontradas no uso da
Internet P*abela 6Q+
Tabela 1: Dificuldades encontradas no uso da Internet pelos brasileiros
=i)iculdades encontradas no uso da Internet Percentual
Acessar sites "ue demoram a carre&ar D?[
N%o encontrar a in)orma$%o desejada JL[
Her te,tos lon&os 4K[
Acessar p&inas com janelas popup 4I[
Hidar com itens de se&uran$a como testes antispam 46[
Hocali0ar um site espec)ico por )erramentas de busca 6D[
Usar teclados virtuais 65[
=e todas as di)iculdades mencionadas! a "uei,a mais )re"uente 9 a demora no
carre&amento das p&inas+ A percep$%o de demora se&ue trAs limites de espera:
5!6 se&undo: W o limite do tempo de resposta para "ue os usurios sintam
como se suas a$>es estivessem surtindo e)eito diretamente sobre o "ue ocorre
na tela+ Por e,emplo! se vocA clicar num menu e,pansvel e vir a vers%o
e,pandida em menos de 5!6 se&undo! ent%o ( a sensa$%o de "ue vocA )e0 o
menu abrir+ /e demorar mais de 5!6 se&undo! a resposta n%o ser vista como
instant_nea em ve0 disso! a sensa$%o ser de "ue o computador est
reali0ando al&o para abrir o menu+ Para criar a ilus%o de manipula$%o direta! a
inter)ace de usurio deve ser mais rpida do "ue 5!6 se&undo+
6 se&undo: Vuando o computador leva entre 5!6 e 6 se&undo para responder!
( a sensa$%o de "ue o computador est causando o resultado+ Embora o
usurio perceba o atraso! ele se mant9m )ocado durante o intervalo+ Isso
si&ni)ica "ue em atrasos de at9 6 se&undo! usurios mantAm a sensa$%o de
estarem no controle da intera$%o! embora notando "ue 9 uma intera$%o de m%o
D
dupla Pentre ele e o computadorQ+ Portanto! as p&inas devem ser e,ibidas
dentro de 6 se&undo para "ue os usurios sintamse nave&ando livremente+
Vual"uer demora e eles se sentir%o atrasados pelo computador+
65 se&undos: Ap8s 6 se&undo! usurios )icam impacientes e percebem "ue
est%o esperando o computador responder+ Vuanto maior a espera! maior a
impaciAncia+ Ap8s apro,imadamente 65 se&undos! o usurio se dispersa!
tendo di)iculdades em reassumir a intera$%o "uando o computador )inalmente
carre&ar a pr8,ima p&ina+ /e a demora )or al9m de 65 se&undos! o usurio
normalmente dei,ar o site+
NIEH/EN! JaGob+ SResponse *imes: *(e J Important HimitsT! 6KKJ+
1 arti&o de Nielsen )oi escrito numa 9poca em "ue a @eb ainda era majoritariamente
esttica+ <on)orme as tecnolo&ias do nave&ador e servidor avan$aram! as p&inas passaram a
e,ibir comportamento din_mico! assemel(andose a sistemas para desGtop+
Para de)inir "ual o limite apropriado! 9 preciso entender "ual o prop8sito do sistema
Beb para a or&ani0a$%o+ Ele pode ser uma alternativa a um sistema de desGtop! como o Mmail
9 para o 1utlooG! necessitando de respostas muito rpidas Pabai,o de 5!6 se&undoQ! ou pode
servir apenas como apresenta$%o da empresa! seus produtos e servi$os Pneste caso podendo
responder em at9 6!5 se&undoQ+ Este trabal(o implementar o Zltimo caso como ambiente para
testes+
A lentid%o 9 prejudicial n%o s8 # usabilidade como tamb9m para a arrecada$%o+
Hinden comenta:
Marissa MaFer PMoo&leQ condu0iu um teste com usurios onde o Moo&le
aumentou o nZmero de resultados por p&ina de 65 para J5+ 1 tr)e&o e a
arrecada$%o caram 45[+ Ap8s pes"uisas! c(e&ouse a conclus%o "ue era
devido ao aumento no tempo de resposta em decorrAncia de mais resultados
por p&ina+ A p&ina com 65 resultados demorava 5!D se&undos para ser
&erada+ A p&ina com J5 resultados demorava 5!K se&undos+ Meio se&undo de
atraso causava uma "ueda de 45[ no tr)e&o+
P`Q tivemos resultados semel(antes na Ama0on+ Em testes A2'! atrasamos as
p&inas em incrementos de 655 milisse&undos e descobrimos "ue pe"uenos
atrasos resultam em "uedas substanciais em arrecada$%o+
Hinden! Mre&+ SMarissa MaFer at @eb 4+5T! 455?+
L
1 Moo&le valori0a tanto a velocidade do site "ue introdu0iu o tempo de resposta
como um dos par_metros no al&oritmo &erador do ranGin& dos resultados das pes"uisas:
P`Q estamos incluindo um novo par_metro em nosso al&oritmo de pes"uisa: a
velocidade do site+ Ela re)lete o "u%o rpido um site responde #s re"uisi$>es
Beb+
Acelerar sites 9 importante n%o s8 para seus donos! mas para todos os
usurios de Internet+ P`Q vimos em nossos estudos "ue "uando um site
responde lentamente! os visitantes &astam menos tempo nele+ Sites rpidos
n%o mel(oram apenas a e,periAncia do usurio\ dados recentes mostram "ue
mel(orar a velocidade do site tamb9m redu0 os custos operacionais+
/INM:AH! Amit\ <U**/! Matt <utts+ SUsin& /ite /peed in @eb /earc(
RanGin&T! 4565+
Estar no topo dos mecanismos de busca 9 importante para muitos ne&8cios+
:istoricamente os pro)issionais de /earc( En&ine 1ptimi0ation
J
P/E1ersQ se preocupavam
e,clusivamente em &arantir o uso correto de certas ta&s :*MH C palavrasc(aves! urls
descritivas e "uantidade de inbound lin*s C al&uns dos principais par_metros do al&oritmo
&erador do ranGin& de busca do Moo&le
D
+ A&ora dever%o se comprometer tamb9m a entre&ar
p&inas rapidamente+
J /E1 9 a atividade de otimi0ar as p&inas de um dado site para "ue seja mel(or classi)icada nos mecanismos
de busca C em especial no Moo&le+
D Recomenda$>es do Moo&le destinadas a @ebmasters (ttp:22support+&oo&le+com2Bebmasters2bin2ansBer+pFa
(lbencansBerbJLE?K
?
Captu0o - 7 'or0d 'ide 'e)4 Conceitos e
5uncionamento
A @@@ 9 a parte da Internet mais visvel aos usurios+ /eu atrativo est na
combina$%o de (iperte,to C um sistema "ue permite "ue documentos sejam associados C!
suporte a mZltiplos )ormatos! como ima&ens e sons! e um protocolo "ue permite tr)e&o
e)iciente desses dados Pdo0ieroG! 455LQ+
*im 'ernersHee! no incio dos anos K5! (avia criado o ambiente "ue tornaria a @eb
realidade: o :Fperte,t MarGup Han&ua&e P:*MHQ! o :Fperte,t *rans)er Protocol P:**PQ! e
os primeiros cliente e servidor Beb+ A esses componentes! juntouse o Uni)orm Resource
Hocator PURHQ! permitindo "ue os recursos )ossem endere$veis P'ernersHee! 4564Q+
-8/ 7 +9perte:t Mar;up an1ua1e
:*MH 9 a lin&ua&em de marca$%o utili0ada para de)inir os documentos de
(iperte,to+ Ela de)ine constru$>es! c(amadas ta"s! "ue in)ormam ao nave&ador como o
documento deve ser apresentado+ Essas ta"s associam documentos entre si e descrevem a
sem_ntica do te,to+
=i)erente de te,to simples! documentos :*MH s%o estruturados lo&icamente em
uma s9rie de elementos! "ue s%o or&ani0ados de acordo com as re&ras da lin&ua&em
L
+ Essas
re&ras in)ormam a sinta,e dos elementos e suas combina$>es permitidas+ 1 ttulo! um
par&ra)o! uma tabela e um lin* s%o e,emplos de elementos+ PFi&ura 6Q
L A @J< )ornece re&ras para vrias vers>es do :*MH atrav9s de =ocument *Fpes =e)initions P=*=Q
disponveis em seu site P(ttp:22BBB+BJ+or&2Q+
E
<title>Ttulo da Pgina</title>
Figura 1: Exemplo da tag "title" definindo o elemento "title"
-8- 7 Uniform Resource ocator
1 Uni)orm Resource Hocator PURHQ )oi desenvolvido para permitir "ue recursos
pudessem ser )acilmente encontrados na Internet! tendo a se&uinte sinta,e:
5protocol6: 1 protocolo da camada de aplica$%o utili0ado na @eb 9 o :**P+
5user6 e 5pass1ord6: /%o opcionais! com a )inalidade de autenticar o usurio em
servidores com recursos prote&idos+ /%o raramente utili0ados+
5host6: 1 endere$o do servidor+ Pode ser tanto o endere$o IP "uanto o endere$o de
domnio+
5port6: <aso n%o seja especi)icado! 9 in)erido o nZmero I5 C padr%o para servidores
Beb+
5path6: Indica "ual recurso do servidor deve ser recuperado+ Em casos mais simples!
o camin(o se&ue a mesma estrutura do sistema de ar"uivos onde o servidor se
encontra Pe,+: BBB+uerj+br2vestibular245642notas+pd) e
c:2servidor2vestibular245642notas+pd)Q+ No entanto! es"uemas mais elaborados podem
ser usados para mapear camin(os para recursos+
57uery8strin"6: <ampo opcional utili0ado para enviar par_metros adicionais ao
servidor+
Na prtica a sinta,e pode ser simpli)icada! uma ve0 "ue os campos 5user6 e
5pass1ord6 raramente s%o utili0ados e o nZmero da porta de)inido como I5! "uando omitido
PIANA! 4564Q+

I
<protocol>://<user>:<password>@<host>:<port>/<path>?<query-string>
Figura 2: Sintaxe da UR
http://<host>/<path>?<query-string>
Figura !: Sintaxe simplificada da UR
-8< 7 # +9perte:t $ransfer %rotoco0
1 :**P 9 o protocolo da camada de aplica$%o com o "ual clientes normalmente
nave&adores e servidores Beb se comunicam+ Ele )oi concebido como um protocolo te,tual
simples! projetado com um Znico prop8sito: permitir a um cliente enviar uma re"uisi$%o para
obter um recurso
?
e recebAlo do servidor+
Em sua )orma mais simples! a opera$%o do :**P envolve apenas um cliente :**P e
um servidor :**P! mais con(ecido como servidor Beb+ Ap8s a cone,%o *<P ser criada entre
as m"uinas! os dois passos na comunica$%o s%o a re"uisi$%o do cliente e a resposta do
servidor+
-8<8/ 7 Re=uisio do C0iente
1 cliente envia uma mensa&em de re"uisi$%o )ormatada de acordo com as re&ras do
:**P+ Esta re"uisi$%o especi)ica o m9todo! o recurso desejado e par_metros adicionais! se
(ouver PFi&uras D e LQ+
A primeira lin(a da re"uisi$%o especi)ica "ual recurso desejado+ Em se&uida! s%o
especi)icados os cabe$al(os da re"uisi$%o C um por lin(a+ /eparado dos cabe$al(os por uma
lin(a em branco! se&ue o corpo da re"uisi$%o! se (ouver+ *odas as lin(as terminam com a
se"uAncia n%o impressa de caracteres carria"e8return line8+eed P<RHFQ+
? W usado o termo recurso em ve0 de p9"ina por"ue ( outros tipos de retorno al9m de :*MH! como ima&em!
Java/cript! video e udio+ 1 cabe$al(o content8type de)ine o tipo de retorno+
K
<linha da requisio>
<ca!ealhos>
"<corpo>#
Figura ": Estrutura de uma re#uisi$%o &TT'
$%T / &TTP/'('
&ost: www()dnet(co*
+ser-,gent: -o)illa/.(/ 01indows 2T 3('4 151364 r7:8(/('9 $ec:o/;/'//'/'
<ire=o>/8(/('
,ccept: te>t/ht*l?application/>ht*l@>*l?application/>*l4qA/(8?B/B4qA/(C
,ccept-Danguage: pt-!r?pt4qA/(C?en-us4qA/(.?en4qA/(E
,ccept-%ncoding: g)ip? de=late
,ccept-Fharset: GH5-CC.8-'?ut=-C4qA/(I?B4qA/(I
Fonnection: :eep-ali7e
Figura (: Exemplo de re#uisi$%o &TT' de uma p)gina &T*
-8<8- 7 Resposta do &ervidor
1 servidor interpreta a re"uisi$%o! e,ecuta a devida a$%o e cria uma mensa&em de
resposta :**P! "ue 9 enviada de volta para o cliente+ A mensa&em de resposta indica se a
re"uisi$%o )oi bem sucedida atrav9s de um c8di&o de status e pode incluir o conteZdo do
recurso solicitado pelo cliente PFi&uras ? e EQ+
A resposta 9 dividida em trAs partes: lin(a de status! cabe$al(os e corpo C esta Zltima
separada por uma lin(a em branco das demais+
1 cabe$al(o content8type da resposta indica "ual o tipo de conteZdo est sendo
retornado no corpo C neste caso! :*MH PFi&ura EQ+
Ap8s receber a resposta! o nave&ador inicia a )ase de interpreta$%o do :*MH+
<on)orme encontra ta"s :*MH! ele preenc(e uma estrutura de dados c(ama &ocument
-b.ect Model P=1MQ! "ue &uardar todos os elementos da p&ina! como )ormulrios!
par&ra)os e ima&ens PFi&ura IQ+
65
&TTP/'(' ;// 5J
Kate: Tue? ;6 Lan ;/'; '8:E6:;8 $-T
Her7er: ,pacheM-+a-Fo*pati!le: G%Aedge?chro*eA'
Jeep-,li7e: ti*eoutA'.? *a>A8I.
Fonnection: Jeep-,li7e
Fontent-Type: te>t/ht*l4 charsetAut=-C
Fache-Fontrol: pri7ate
Fontent-%ncoding: g)ip
Trans=er-%ncoding: chun:ed
<NK5FTOP% ht*l P+PDGF Q-//1EF//KTK M&T-D '(/ Transitional//%2Q
Qhttp://www(wE(org/TR/>ht*l'/KTK/>ht*l'-transitional(dtdQ>
<ht*l >*lnsAQhttp://www(wE(org/'888/>ht*lQ >*l:langAQenQ
>l*ns:ogAQhttp://ogp(*e/nsSQ >l*ns:=!AQhttp://www(=ace!oo:(co*/;//C/=!*lQ
langAQenQ classAQQ>
<head>
<*eta http-equi7AQFontent-TypeQ contentAQte>t/ht*l4 charsetAut=-CQ />
<*eta http-equi7AQM-+a-Fo*pati!leQ contentAQG%Aedge?chro*eA'Q />
0(((9
Figura +: Exemplo de resposta &TT' de uma p)gina &T*
<linha-de-status>
<ca!ealhos>
"<corpo>#
Figura ,: Estrutura da resposta &TT'
<on)orme identi)ica re)erAncias a componentes e,ternos ao :*MH como ima&ens!
Java/cripts! <// ou Flas( PFi&ura KQ! o nave&ador busca em seu cache para ver se o recurso
j )oi trans)erido anteriormente+ <aso n%o o ten(a em cache! &era outras re"uisi$>es :**P C
uma para cada componente PFi&ura 65Q+
66
$%T /gallery/6356571-620-250.jpg &TTP/'('
&ost: i1.trstatic.com
+ser-,gent: -o)illa/.(/ 01indows 2T 3('4 151364 r7:8(/('9 $ec:o/;/'//'/'
<ire=o>/8(/('
,ccept: i*age/png?i*age/B4qA/(C?B/B4qA/(.
,ccept-Danguage: pt-!r?pt4qA/(C?en-us4qA/(.?en4qA/(E
,ccept-%ncoding: g)ip? de=late
,ccept-Fharset: GH5-CC.8-'?ut=-C4qA/(I?B4qA/(I
Fonnection: :eep-ali7eRe=erer: http://www()dnet(co*/
Figura 1-: Exemplo de re#uisi$%o &TT' para um componente da p)gina
<span classAQ*as: *as:-.>;-3;/Q>
<i*g widthAQ3;/Q heightAQ;./Q altAQTideo ga*es *a:ing students *ore
7iolent?Q srcAQhttp://i4.trstatic.com/gallery/6356571-620-250.jpgQ>
</span>
Figura .: /omponente externo 0imagem1 referenciado na p)gina
Figura 2: Document 3b4ect *odel 0D3*1
Ap8s todos os componentes serem trans)eridos! a vers%o )inal da p&ina 9 e,ibida
PFi&ura 66Q+
64
Figura 11: 5is%o do site 6D7et ap8s todos os componentes serem carregados
Atrav9s do plu"in Firebu&! disponvel para o nave&ador Fire)o,! 9 possvel veri)icar
as re"uisi$>es por componentes e,ternos )eitas pelo nave&ador PFi&ura 64Q+
As colunas da aba 'et PFi&ura 64Q e,ibem o recurso trans)erido! c8di&o de status!
endere$o de domnio! taman(o! endere$o IP e tempo decorrido! respectivamente+ Notase "ue
ao re"uisitar um Znico documento! muitas re"uisi$>es adicionais podem ser &eradas! uma ve0
"ue ele pode ser composto por vrios componentes e,ternos+
6J
Figura 12: Firebug listando todos os componentes de uma p)gina
-8<8< 7 M>todos +$$%
1 protocolo :**P de)ine oito m9todos com os "uais uma re"uisi$%o pode ser )eita!
dentre os "uais! os mais comuns s%o
E
:
ME*: *em como prop8sito re"uisitar um recurso do servidor+ W o tipo mais bsico de
re"uisi$%o e responsvel pela maior parte do tr)e&o+ Par_metros adicionais s%o
passados atrav9s da pr8pria URH! no campo 7uery8strin"+
P1/*: /erve para enviar in)orma$>es "ue devam ser processadas no servidor! o "ue
pode resultar na inser$%o de um novo recurso ou na atuali0a$%o de um j e,istente+
Vual"uer par_metro 9 passado atrav9s do corpo da re"uisi$%o+
Embora esses sejam os usos su&eridos! n%o s%o obri&at8rios+ <abe ao servidor
interpretar o "ue a re"uisi$%o realmente e,ecuta PRF< 4?6?! 6KKKQ+
-8<8? 7 C@di1os de &tatus
Ap8s o servidor receber a re"uisi$%o! al&uns cenrios podem ocorrer+ A re"uisi$%o
pode ser bem sucedida! estar mal )eita! o servidor pode estar en)rentando di)iculdades ou pode
ser necessria al&uma a$%o adicional do cliente! entre outros+
1 protocolo :**P de)ine c8di&os de status! "ue )ornecem ao nave&ador o estado da
resposta em sua primeira lin(a PFi&ura EQ+ 1 primeiro d&ito do c8di&o )ornece um si&ni)icado
&en9rico
I
P*abela 4Q+
Tabela 2: Significado dos c8digos de status &TT' pelo primeiro d9gito
<8di&o /i&ni)icado =escri$%o
6UU In)ormation In)orma$>es &en9ricas+ N%o si&ni)ica sucesso nem )al(a+
4UU /uccess Re"uisi$%o )oi recebida e aceita pelo servidor+
JUU Redirect Al&uma a$%o adicional do cliente 9 necessria+
DUU <lient Error A re"uisi$%o 9 invlida ou n%o p;de ser completada por al&uma
ra0%o "ue o servidor crA "ue seja do cliente+
LUU /erver Error A re"uisi$%o )oi vlida! mas por culpa do servidor! n%o pode ser
completada+
E 1s demais m9todos s%o PU*! =EHE*E! :EA=! 1P*I1N/! *RA<E e <1NNE<*+
I A tabela com todos os condi&os de status pode ser encontrada em: (ttp:22BBB+BJ+or&2Protocols2
r)c4?6?2r)c4?6?sec65+(tml
6D
-8? 7 Ar=uitetura de Um &istema 'e)
Um sistema Beb normalmente 9 dividido lo&icamente em duas partes: +rontend e
bac*end+
No +rontend s%o empre&adas tecnolo&ias relacionadas # inter)ace de usurio! como
:*MH! <//! Java/cript! ima&ens! udio! vdeo! Flas( e /ilverli&(t+ Esses componentes!
inicialmente residentes no servidor! s%o trans)eridos para o nave&ador con)orme solicitados+
No bac*end! onde se locali0a o servidor! 9 e,ecutada a l8&ica da aplica$%o+ Nele! s%o
utili0adas lin&ua&ens de pro&rama$%o como Java! Perl! P:P e PFt(on! seus respectivos
)rameBorGs e 9 )eito o acesso a bancos de dados e a sistemas de ar"uivos PFi&ura 6JQ+
1 papel do bac*end 9 processar a re"uisi$%o e &erar uma resposta para o usurio+
Em uma aplica$%o tpica! a re"uisi$%o c(e&a ao servidor Beb
K
! "ue veri)ica "ual
recurso o cliente deseja analisando a primeira lin(a da mensa&em PFi&ura LQ+ Em se&uida
compara o recurso desejado com uma rela$%o de rotas! "ue mapeia URHs para a$>es a serem
e,ecutadas PFi&ura 6DQ+
K <ertos sistemas )a0em uso de um servidor de aplicao+ /ervidores de aplica$%o e,istem desde antes da @eb
e eram acessados atrav9s de outros protocolos+ <om a ascen$%o da @eb! os servidores de aplica$%o passaram
a incluir um servidor Beb de )orma a poderem intera&ir com clientes Beb+ /ervidores de aplica$%o )ornecem
servi$os como balanceamento de car&a! &erenciamento de transa$>es e se&uran$a+ Neste trabal(o )oi usado
apenas um servidor Beb+
6L
Figura 1!: Exemplo de tecnologias encontradas no Frontend e :ac;end
1 recurso re"uisitado pode ser esttico ou din_mico+ Recursos estticos est%o
)isicamente salvos em disco! de onde s%o prontamente atendidos+ Em contraste! recursos
din_micos s%o processados e criados con)orme necessrio pela aplica$%o+
Aplica$>es Beb apresentam uma &rande "uantidade de ar"uivos com conteZdo e
estrutura semel(antes uns aos outros+ Em ve0 de mantAlos em disco! os sistemas usam uma
vers%o inacabada do ar"uivo c(amada template PFi&ura 6LQ+
Templates cont9m ta"s
:;
especiais "ue in)ormam ao sistema "ual in)orma$%o incluir
baseado em al&um par_metro! como a identi)ica$%o do usurio ou do produto PFi&ura 6LQ+
65 Essas ta"s especiais utili0adas no template s%o di)erentes das ta"s do padr%o :*MH+ Elas s%o inseridas no
template com o prop8sito de serem substitudas por in)orma$>es processadas pela aplica$%o+
6?
S %stticos
$%T /i*ages/logo(png U VK5F+-%2TWR55T/i*ages/logo(png
$%T /i*ages/!oo:s/VP55JWGK(png U VK5F+-%2TWR55T/i*ages/!oo:s/
VP55JWGK(png
S KinX*icos
$%T /!oo:s U list,llPoo:s094
$%T /!oo:s?VP55JWGK U showPoo:0VP55JWGK94
$%T /d7ds?VKTKWGK U showKTK0VKTKWGK94
P5HT /chec:out/ U chargeFreditFard0VFR%KGTWF,RKW2594
S +sando P5HT para apagar e atuali)ar recursos
P5HT /!oo:s/delete?VP55JWGK U deletePoo:0VP55JWGK94
P5HT /d7ds/delete?VKTKWGK U deleteKTK0VKTKWGK94
P5HT /!oo:s/update?VP55JWGK U updatePoo:0VP55JWGK94
P5HT /d7ds/update?VKTKWGK U updateKTK0VKTKWGK94
S +sando K%D%T% e +PK,T%
K%D%T% /!oo:s?VP55JWGK U deletePoo:0VP55JWGK94
K%D%T% /d7ds?VKTKWGK U deleteKTK0VKTKWGK94
P+T /!oo:s?VP55JWGK U updatePoo:0VP55JWGK94
P+T /d7ds?VKTKWGK U updateKTK0VKTKWGK94
Figura 1": Tabela de rotas do ser<idor
<i*g srcAY/!oo:s/<%= imagepatho!"oo#$%"oo#i&' %(Y altAYY />
<tr>
<td>Dist Price:</td>
<td>+V <%= listpriceo!"oo#$%"oo#i&' %(</td>
</tr>
<tr>
<td>Price:</td>
<td>+V <%= priceo!"oo#$%"oo#i&' %(</td>
</tr>
Figura 1(: Trec=o &T* de um template
<on)orme necessrio! o sistema substitui as ta"s por in)orma$>es consultando o
banco de dados PFi&uras 6? e 6EQ+
Ap8s as ta"s serem substitudas e a vers%o )inal ser construda! o documento :*MH
9 enviado para o nave&ador+
Ao )inal do processo! o cliente n%o sabe se a p&ina j e,istia PestticaQ ou se )oi
criada ap8s a re"uisi$%o Pdin_micaQ! nem "uais tecnolo&ias )oram empre&adas no servidor+
Ele apenas recebe uma mensa&em de te,to como resposta se&uindo as re&ras de)inidas pelo
:**P+
6E
H%D%FT i*age? listWprice? price <R5- !oo:s 1&%R% !oo:Wid A 66.;E6..;4
> i*age listWprice price
> 53))614220*063115470)33*25*.jpg *).)) 52.*1
Figura 1,: Resultado da consulta ao banco de dados
<i*g srcAY/!oo:s/53))614220*063115470)33*25*.jpgY altAYY />
<tr>
<td>Dist Price:</td>
<td>+V *).))</td>
</tr>
<tr>
<td>Price:</td>
<td>+V 52.*1</td>
</tr>
Figura 1+: &T* finali>ado ap8s a substitui$%o das tags do template
Captu0o < 7 5atores Determinantes da Ve0ocidade de
Um &ite
1 tempo de resposta da p&ina 9 o tempo decorrido entre o envio da primeira
re"uisi$%o pelo documento :*MH e o t9rmino de todas as trans)erAncias associadas! ou
seja! dos demais componentes e,ternos P/ouders! 455EQ+ *rAs )atores in)luenciam o tempo de
resposta: 6Q a comunica$%o entre cliente e servidor\ 4Q o taman(o do recurso\ e JQ o tempo
para o servidor processar a re"uisi$%o+
W necessrio descrever al&umas medidas de desempen(o usadas em redes de
computadores:
Har&ura de 'anda: W o termo usado para se re)erir # capacidade de
carre&amento da rede ou mdia+ Ela indica a "uantidade m,ima de dados "ue
pode passar de um ponto a outro em uma unidade de tempo+
HatAncia: A latAncia 9 "uanto tempo leva entre o envio de uma solicita$%o at9 a
resposta come$ar a c(e&ar+ HatAncia bai,a 9 considerada mel(or "ue latAncia
alta+
d1RIER1d! <(arles+ S*(e *<P2IP MuideT! 455L
<8/ 7 Comunicao Entre C0iente e &ervidor
<8/8/ 7 Roteadores Intermedirios
Fre"uentemente o cliente est &eo&ra)icamente distante do servidor+ Pela nature0a da
pil(a de protocolos *<P2IP! 9 necessrio "ue a mensa&em seja retransmitida atrav9s de
m"uinas intermedirias! c(amadas de roteadores+ <ada roteador precisa decidir localmente
para onde encamin(ar a mensa&em+ Esse processo contribui para o aumento da latAncia+
Atrav9s do pro&rama pin" 9 possvel veri)icar a latAncia na comunica$%o entre
dispositivos "ue estejam aceitando pacotes I<MP PFi&ura 6IQ+ 1 pin" )unciona enviando
mensa&ens do tipo echo re7uest para um outro dispositivo! "ue responde com mensa&ens do
tipo echo reply+
6I
1 pin" calcula latAncia entre o envio da mensa&em e a c(e&ada da resposta+ <ada
lin(a impressa pelo pro&rama representa um par echo8re7uest<echo8reply+ 1 campo time
in)orma o tempo decorrido entre o envio e o recebimento das mensa&ens+ PFi&ura 6IQ+
Esse valor pode ser discrepante entre um envio e outro uma ve0 "ue o I<MP usa o IP
para roteamento das mensa&ens! "ue 9 um protocolo sem cone,%o! onde os pacotes podem ser
encamin(ados por rotas distintas para seu destinatrio
66
+
<8/8- 7 (anda da Comunicao
A lar&ura de banda do cliente e do servidor s%o proporcionais # va0%o+ Mrandes
datacenters o)erecem cone,>es com centenas de Mbps para os servidores+ A menos "ue o site
seja muito visitado! o &ar&alo se encontra no cliente! cujas velocidades na maioria dos casos
variam entre L?dbps e 4Mbps P<E*I<+br! 4565Q+
<8- 7 # $aman3o do Recurso
Intimamente associada a banda! o taman(o do recurso tamb9m 9 proporcional ao
tempo de trans)erAncia dos dados+ Vuanto maior o recurso! maior o tempo necessrio para
trans)erilo+
<8< 7 $empo do &ervidor
Para atender uma re"uisi$%o! o servidor precisa interpretla e e,ecutar a a$%o
pertinente+ Recursos estticos n%o necessitam de muito tempo de processamento e s%o
prontamente atendidos+ Recursos din_micos re"uerem a e,ecu$%o de atividades adicionais e
podem contribuir para o aumento do tempo de respostas+
66 1 pro&rama traceroute permite estimar por "uantos Pe "uaisQ roteadores as mensa&ens passar%o+
6K
victorfvictorIdeaPad]DJ5:gh pin& &6+&lobo+com c D
PINM &6+&lobo+com P6I?+6K4+I4+66DQ L?PIDQ bFtes o) data+
?D bFtes )rom 6I?+6K4+I4+66D: icmp.re"b6 ttlb4L5 timebIE+6 ms
?D bFtes )rom 6I?+6K4+I4+66D: icmp.re"b4 ttlb4L5 timebJJ+4 ms
?D bFtes )rom 6I?+6K4+I4+66D: icmp.re"bJ ttlb4L5 timeb6D+D ms
?D bFtes )rom 6I?+6K4+I4+66D: icmp.re"bD ttlb4L5 timeb6J+K ms
&6+&lobo+com pin& statistics
D pacGets transmitted! D received! 5[ pacGet loss! time 6L45Lms
rtt min2av&2ma,2mdev b 6J+K6L2JE+45I2IE+6EL24K+II5 ms
Figura 12: Exemplo de uso do programa ping para <erificar a lat?ncia para o endere$o g1@globo@com
1 Firebu& PFi&ura 6?Q detal(a o tempo &asto em vrias etapas da re"uisi$%o+ &'S
oo*up= tempo &asto na consulta ao servidor de =N/ sobre "ual o endere$o IP do domnio+
#onnectin"= tempo necessrio para reali0ar a cone,%o *<P+ Sendin"= tempo enviando os
cabe$al(os da re"uisi$%o+ Waitin"= tempo de espera at9 o primeiro pacote da resposta c(e&ar
ao nave&ador+ Receivin"= tempo de se trans)erir toda a resposta+
A re"uisi$%o s8 entra no estado Receivin" "uando o nave&ador receber o primeiro
pacote da resposta! ou seja! ap8s todo o processamento do servidor ter ocorrido+
/teve /ouders! condu0indo testes de velocidade com os de0 sites mais acessados nos
Estados Unidos! reali0ou duas medidas de tempo:
*empo &asto no bac*end: Intervalo de tempo entre a solicita$%o e o
recebimento dos primeiros pacotes da resposta do :*MH P"uando o nave&ador
encontrase no estado Waitin"Q+
*empo &asto no +rontend: Intervalo de tempo entre a solicita$%o do primeiro
componente e,terno e o recebimento do Zltimo+
45
Figura 1.: 5erifica$%o do tempo de resposta com Firebug
/ouders conclui "ue cerca de 6545[ do tempo 9 &asto no bac*end P*abela JQ+
Tabela !: 'ercentual do tempo gasto no bac;end de 1- grandes sites
/ite #ache va0io #ache c(eio
A1H ?[ 6D[
Ama0on 6I[ 6D[
<NN 6K[ I[
E'aF 4[ I[
Moo&le 6D[ J?[
M/N J[ L[
MF/pace D[ 6D[
@iGipedia 45[ 64[
]a(oo^ L[ 64[
]ou*ube J[ L[
*omando a propor$%o apro,imada de "ue 45[ do tempo 9 &asto no bac*end e I5[
no +rontend! os testes su&erem "ue "ual"uer es)or$o para se diminuir o tempo de resposta ter
maior e)iciAncia )ocandose em otimi0ar o +rontend+
46
Captu0o ? 7 Am)iente de Ava0iao
?8/ 7 # 6erador de Car1a
Partindo das no$>es do <aptulo 4 sobre o )uncionamento da @eb! revelase trivial
&erar uma car&a em um servidor! bastando enviarl(e uma "uantidade si&ni)icativa de
re"uisi$>es+
Em um cenrio real! vrios usurios &eram re"uisi$>es ao servidor PFi&ura 45Q+
No entanto! em um ambiente de testes! n%o ( disponibilidade de tantas m"uinas
clientes+ Para se &erar muitas re"uisi$>es a ponto de estressar o servidor 9 necessrio um
pro&rama &ere a car&a simulando o comportamento de vrios clientes PFi&ura 6IQ+
44
Figura 2-: /arga real sendo gerada por <)rios clientes
=ois pro&ramas s%o normalmente utili0ados com esta )inalidade: Apac(e'enc( e
:**Per)+
?8/8/ 7 Apac3e(enc3
W uma )erramenta de medi$%o de desempen(o criada pelo mesmo &rupo responsvel
pelo servidor Apac(e+ Embora ten(a sido desenvolvida para testar a instala$%o desse servidor
em particular! o Apac(e'enc( &era re"uisi$>es :**P &en9ricas! "ue podem ser respondidas
por "ual"uer servidor Beb+
?8/8- 7 +$$%erf
/emel(ante ao Apac(e'enc(! o :**Per) 9 uma )erramenta para medir o
desempen(o do servidor Beb+ Ele )ornece uma inter)ace simples para &erar um &rande
volume de re"uisi$>es :**P a )im de medir o desempen(o do servidor+
?8/8< 7 '''44Mec3aniAe
*anto o Apac(e'enc( "uanto :**Per) usam uma sinta,e semel(ante! onde 9
in)ormado a "uantidade de re"uisi$>es! "uantidade de clientes e dados do servidor! como
endere$o! porta e recurso+ A sinta,e! ao mesmo tempo "ue simples! mostrase limitada uma
ve0 "ue uma intera$%o real envolve re"uisi$>es a vrios recursos di)erentes+
<aso a aplica$%o avaliada j estivesse em produ$%o e com &rande volume de acessos!
seria possvel recriar a car&a a partir de lo"s de acesso de dias anteriores+ No entanto! esse n%o
9 o caso uma ve0 "ue a aplica$%o s8 e,istiu para a )inalidade dessa avalia$%o+ Para se simular
uma car&a real! )oi necessrio pro&ramar os casos de uso+
@@@::Mec(ani0e 9 uma biblioteca disponvel nas lin&ua&ens Perl! PFt(on e RubF
"ue au,ilia na cria$%o de scripts de visita$%o de sites+ /eu uso comum 9 para screen scrapin"
e cria$%o de spiders+
4J
Figura 21: /arga sendo gerada artificialmente
1 @@@::Mec(ani0e 9 constitudo de dois m8dulos principais! "ue em conjunto
e,ecutam as tare)as bsicas de um nave&ador:
%ser8a"ent: Implementa o protocolo :**P+ W responsvel por )ormatar as
re"uisi$>es e interpretar a resposta+
(TM parser: Permite a nave&a$%o pelo =1M da p&ina por meio de seletores
<//+ Atrav9s dele "ue 9 possvel determinar com "uais componentes da p&ina
intera&ir Pe,+: clicar em lin*s e preenc(er )ormulriosQ+
1 @@@::Mec(ani0e )oi abstrado na classe 'avi"ator
:>
? desempen(ando o papel do
nave&ador+
1 &erador de car&a lA um ar"uivo "ue cont9m o 1or*load
:@
Pcar&a de trabal(oQ! onde
9 determinado o nZmero de clientes e seus respectivos casos de uso+ Em se&uida cria um
'avi"ator para cada cliente+ PFi&ura 44Q
<ada 'avi"ator envia re"uisi$>es
6D
para o servidor de acordo com seus casos de uso+
<aso a resposta da re"uisi$%o seja :*MH! o 'avi"ator utili0a o (TM parser para intera&ir
com componentes da p&ina+
1s dados estatsticos relativo a tempo de resposta )oram coletados pelos pr8prios
clientes
6L
+
64 Ar"uivo navi&ator+rb C em ane,o+
6J A classe Wor*loadMana"er PBorGload.mana&er+rbQ carre&a a partir da pasta input os ar"uivos com o
BorGload! "ue s%o representados pela classe Wor*load PBorGload+rbQ
6D As re"uisi$>es s%o representadas pela classe Re7uest Pre"uest+rbQ
6L <lasse Report Preport+rbQ
4D
Figura 22: UserAagents criados pelo gerador de carga
?8/8? 7 &e0etores C&&
/eletores <// s%o padr>es "ue )oram ori&inalmente concebidos para selecionar
elementos de um documento :*MH para "ue pudessem ter estilos de )ormata$%o aplicados
P*abela DQ+ No entanto! eles s%o uma maneira e)iciente de nave&ar pelo =1M! sendo
utili0adas em vrias bibliotecas "ue precisam intera&ir com os elementos da p&ina
6?
+
Tabela ": 'adrBes para seletores /SS
%adro &i1nificado
B Vual"uer elemento
E Vual"uer elemento E Pe,+: Elemento (6 e X(6YQ
E 5 Vual"uer elemento F "ue seja descendente de um elemento E
E C 5 Vual"uer elemento F "ue seja )il(o de um elemento E
E4first2c3i0d Vual"uer elemento E! "uando E )or o primeiro )il(o do pai
/endo todas as condi$>es no padr%o satis)eitas! o elemento retornado+
6? /%o usados em bibliotecas como jVuerF e /Fm)onF+
4L
Figura 2!: Selecionando texto de uma p)gina atra<Cs de Seletores /SS
Por e,emplo! no site &6+&lobo+com PFi&ura 4JQ! para automati0ar o processo de
veri)icar todas as manc(etes das Zltimas notcias! devese in)ormar ao (TM parser para
acessar o te,to contido na ta" cuja classe 9 Atitulo e sua classe pai 9 Aitem8noticia8conteudo
atrav9s do seletor <// Aitem8noticia8conteudo Atitulo+
?8- 7 Infraestrutura
A in)raestrutura de servidores e rede )oi simulada em um ambiente virtuali0ado! onde
tamb9m )oi instalado o cliente &erador de car&a+
Para avaliar as recomenda$>es! )oi usado um /istema de Merenciamento de
<onteZdo P<M/ <ontent Mana&ement /FstemQ popular C @ordpress+
Essa plata)orma )oi instalada em servidores com diversas con)i&ura$>es e teve os
resultados comparados+ 1 baseline para a compara$%o )oi uma instala$%o padr%o do
@ordpress J+J+4 na m"uina server.5 P*abela LQ+
Primeiramente )oi )eito o escalamento vertical+ Em se&uida )oram implementadas as
recomenda$>es de /ouders+
?8-8/ 7 'ordpress
*ratase de um sistema de blo&s personali0vel! open source! codi)icado em P:P e
normalmente utili0ado em conjunto com a plata)orma HAMP PHinu,! Apac(e! MF/VH! P:PQ+
<om uso de determinados plu&ins! 9 possvel estender suas )uncionalidades para )8runs de
discuss%o! lojas virtuais e e0ines+ W o <M/ mais utili0ado atualmente! com 6L[ da )atia de
mercado P@J*ec(! 4564Q+ 1 per)il de uso desse sistema 9 de muitas leituras Ppara recursos
estticos ou din_micosQ e poucas escritas+
?8-8- 7 Virtua0iAao
A ideia bsica por trs de uma m"uina virtual 9 a abstra$%o do (ardBare de um
computador P<PU! mem8ria! drives de disco e demais componentesQ em vrios ambientes de
e,ecu$%o di)erentes! dando a impress%o de "ue cada usurio tem seu pr8prio ambiente de
e,ecu$%o privado P/ilbersc(at0! 4565Q+ <ada m"uina tem a ilus%o de ter processadores!
mem8ria e disco pr8prios+
No conte,to de (ospeda&em para a @eb! a virtuali0a$%o serviu para preenc(er a
lacuna entre dois e,tremos: m"uinas dedicadas e (ospeda&em compartil(ada+
M"uina dedicada: A m"uina 9 cedida a apenas um usurio! "ue tem liberdade de
instalar "ual"uer so)tBare+ No entanto! nem sempre o usurio precisa de tantos
recursos e acaba ocorrendo desperdcio+
4?
:ospeda&em compartil(ada: Uma Znica instala$%o do ambiente de e,ecu$%o Psistema
operacional! banco de dados! lin&ua&ens de pro&rama$%o! so)tBares utilitriosQ 9
compartil(ada por vrios usurios+ W mais econ;mica! por9m mais limitada+ <aso um
dos usurios se comporte de maneira inconveniente Pe,+: muitos acessos a discoQ os
demais usurios poder%o ser prejudicados+ Por "uest>es de se&uran$a! os usurios tAm
poucos privil9&ios Pescrita e leitura apenas em seu diret8rioQ e n%o podem instalar
novos so)tBares+ Al&umas empresas de (ospeda&em saturam o servidor de usurios!
de&radando o desempen(o+
M"uina Virtual ou Virtual Private /erver PVP/Q: Uma m"uina real! c(amada de
(ospedeira! 9 )racionada em al&umas m"uinas virtuais! c(amadas de convidadas+
<ada m"uina virtual 9 cedida a um usurio! "ue tem posse da conta de administrador
e pode instalar e con)i&urar "uais"uer so)tBares+ Normalmente a m"uina (ospedeira
9 dividida em uma "uantidade pe"uena de m"uinas convidadas a )im de manter o
desempen(o aceitvel em todas as inst_ncias+
A proposta 9 reprodu0ir da )orma mais )iel um cenrio real+ Para isso 9 importante
"ue tanto so)tBares "uanto in)raestrutura sejam os mesmos utili0ados em solu$>es reais+
Hinu,! Apac(e! MF/VH e P:P )ormam a plata)orma mais comum para desenvolvimento Beb
4E
Figura 2": 5is%o do ambiente de teste
PNetcra)t! 4565Q e a Hinode o)erece um ambiente virtuali0ado semel(ante aos principais
datacenters mundiais
6E
+
1 Zltimo componente! o usurio! )oi simulado por meio de casos de uso Pdetal(ados
em ane,oQ! "ue se&uiram a propor$%o de 65[ de escritas e K5[ de leituras a )im de re)letir o
comportamento tpico dos usurios PNielsen! 455?Q+ 1s clculos do tempo de resposta )oram
baseados numa cone,%o de 6Mbps por ser a velocidade mais comum dos usurios brasileiros
P<E*I<+br! 4565Q+
6E 1utros datacenters muito utili0ados incluem Ama0on! Jo(n <ompanies e ARP NetBorGs+
4I
Captu0o D 7 $>cnicas de Reduo do $empo de
Resposta
A maioria das recomenda$>es de /ouders est%o relacionadas # diminui$%o do total de
dados trans)erido! seja redu0indo o taman(o dos componentes Precomenda$>es L+6! L+D! L+I e
L+KQ! seja evitando a necessidade da uma re"uisi$%o PL+4! L+J e L+LQ+
D8/ 7 5aAer Menos Re=uisiEes +$$%
Parte do tempo de resposta est associada a trans)erir componentes e,ternos da
p&ina! como ima&ens! )ol(as de estilo e Java/cripts+ Redu0ir o nZmero de componentes
diminui o nZmero de re"uisi$>es :**P necessrias para e,ibir a p&ina+
<ada re"uisi$%o tem seus cabe$al(os! "ue consomem parte da banda do usurio+ Para
trans)erAncias &randes! o cabe$al(o se torna proporcionalmente pe"ueno+ Analo&amente! para
trans)erAncias pe"uenas! o cabe$al(o se torna proporcionalmente &rande PFi&ura 4LQ+
Ao combinar o conteZdo de vrios componentes em um Znico ar"uivo! economi0ase
a banda "ue seria utili0ada em mZltiplos cabe$al(os+
Al9m disso! o taman(o do ar"uivo combinado 9 menor "ue a soma dos taman(os dos
ar"uivos individuais! uma ve0 "ue um ar"uivo &rande proporcionam mais oportunidades de
compress%o do "ue muitos ar"uivos pe"uenos+
Para combinar ar"uivos de te,to! como <// e Java/cript! basta copiar o conteZdo
dos ar"uivos para um Znico documento+ J a combina$%o de ima&ens 9 )eita atrav9s de um
sprite de ima&ens! isto 9! criase um novo ar"uivo e posiciona as )i&uras lado a lado PFi&ura
4?Q+
4K
Figura 2(: Sobrecarga de muitos cabe$al=os &TT'
Nos testes! a combina$%o )oi )eita da se&uinte )orma:
5ormato do ar=uivo $aman3o no com)inados $aman3o com)inados Reduo
Java/cript DDK G' 4KD G' JD [
<// DJ G' 6? G' ?4 [
PNM Pima&eQ L6 G' JI G' 4L [
Tabela (: /ompara$%o entre ar#ui<os indi<iduais e combinados
D8- 7 Adicionar Ca)ea03o E:pires
Na primeira visita do usurio # p&ina! o nave&ador pode ter "ue )a0er vrias
re"uisi$>es por componentes e,ternos+ Usando o cabe$al(o e)pires nas respostas! o servidor
instrui o nave&ador a manter o componente em cache durante um determinado perodo!
evitando )uturas re"uisi$>es para o mesmo componente Pdentro do pra0o de validadeQ+ A
instala$%o padr%o do Apac(e inclui o cabe$al(o e)pires ativado+ Em um dos testes o
cabe$al(o e,pires )oi desativado para analisar sua contribui$%o para o tempo de resposta+
D8< 7 Confi1urar E$a1s
2ntity Ta"s PE*a&sQ 9 um mecanismo "ue servidores e nave&adores usam para
determinar se o componente no cache do nave&ador combina com o residente no servidor+
Junto da primeira reposta # re"uisi$%o por um determinado componente! o servidor envia um
hash PEta&Q da"uele componente+
J5
Figura 2,: Uso de Sprites
%Tag: Q3C3C8I383aIcCI3!IeQ
Figura 2+: Exemplo de Etag na resposta do ser<idor
=i)erente do cabe$al(o e)pires! o E*a& n%o )ornece meios do nave&ador decidir
localmente se o componente 9 vlido ou n%o+ 1 nave&ador precisa )a0er a re"uisi$%o! no
entanto adicionando o cabe$al(o ,+8'one8Match na mensa&em+
Ao receber a re"uisi$%o! o servidor compara o Eta& enviado pelo nave&ador com o
Eta& de sua vers%o do componente+ /e as Eta&s combinarem! a vers%o do cliente ainda 9
valida! bastando noti)iclo a usar a vers%o em cache Patrav9s do c8di&o de controle @;B C
'ot Modi+iedQ+ <aso n%o combinem! o componente 9 trans)erido normalmente+
E*a&s e e)pires s%o dois mecanismos distintos para implementar a mesma poltica C
de evitar trans)erAncias desnecessrias+ A di)eren$a 9 "ue! pelo )ato de ter um pra0o de
validade j determinado! o nave&ador decide localmente por usar sua vers%o em cache!
evitando a necessidade da re"uisi$%o+ Por outro lado! com Eta&s! o nave&ador sempre )a0 a
re"uisi$%o! no entanto esperando evitar a trans)erAncia do componente na resposta+
D8? 7 Comprimir os Componentes
A compress%o redu0 o taman(o da resposta :**P+ A partir do :**P26+6! clientes
Beb podem indicar o suporte para compress%o atrav9s do cabe$al(o accept8encodin"+ M0ip 9
o m9todo de compress%o mais popular! redu0indo o taman(o da resposta em cerca de E5[
P]a(oo^! 4564Q+
Componente $aman3o ori1ina0 $aman3o comprimido
2 Pra0 do siteQ JI G' J+K G'
stFle+css LJ G' 66 G'
j"uerF+js 4DE G' E4 G'
j"uerFui+js 454 G' L5 G'
j"uerFui+css J4 G' L+I G'
A instala$%o padr%o do Apac(e j inclui a compress%o (abilitada+ Para e)eitos de
compara$%o! ela )oi desabilitada em um dos testes+
J6
G=-2one--atch: Q3C3C8I383aIcCI3!IeQ
Figura 22: Exemplo de Etag na re#uisi$%o do cliente
D8D 7 Co0ocar C&& e Java&cript em Ar=uivos E:ternos
*anto <// "uanto Java/cript podem ser includos nas p&inas de duas )ormas: inline
e em ar"uivos e,ternos+ ,nline si&ni)ica "ue o c8di&o residir no corpo do pr8prio :*MH
p&ina+ Vuando colocados em ar"uivos e,ternos! apenas uma re)erAncia 9 inserida no :*MH+
Pelo )ato de estarem em seus pr8prios ar"uivos! <// e Java/cripts e,ternos podem ser
reutili0ados por muitas p&inas+
<olocando <// e Java/cript em ar"uivos e,ternos permite "ue sejam salvos no
cache do nave&ador+ Em oposi$%o! "uando s%o mesclados diretamente no c8di&o :*MH
PinlineQ! o c8di&o 9 bai,ado novamente cada solicita$%o+
D8F 7 Consu0tas ao D*&
1 nave&ador n%o pode come$ar a bai,ar os componentes da p&ina at9 saber o
endere$o IP do servidor+ Para isso! deve consultar o =N/+ <ada consulta leva de 45 a 645
milisse&undos+ Evitar consultas ao =N/ pode redu0ir o tempo de resposta+
Al&uns sites dividem seus componentes por vrios domnios+ Essa prtica 9 um
res"ucio da recomenda$%o da @J< para "ue os nave&adores trans)eriram apenas 4
componentes em paralelo a cada instante+ Nesse caso! a divis%o em n domnios permitia >Dn
trans)erAncias em paralelo+ No entanto! nave&adores modernos despre0am a recomenda$%o da
@J< e bai,am at9 I componentes de cada ve0! de )orma "ue n%o )a0 mais sentido servir os
componentes atrav9s de vrios domnios+
D8G 7 Minificar Java&cript e C&&
Mini)icar 9 a prtica de remover caracteres desnecessrios do c8di&o para redu0ir o
taman(o e mel(orar o tempo de carre&amento+ Vuando o c8di&o 9 mini)icado! todos os
comentrios e espa$os em branco s%o removidos+
Ao mini)icar os ar"uivos Java/cript da aplica$%o! (ouve uma redu$%o de ELEG' para
4JIG'! J6[ do taman(o ori&inal+ 1s ar"uivos <// )oram redu0idos de ?EG' para JJG'! DK[
do taman(o ori&inal+
J4
=unction =0n9 Zi=0nAA/9return /4i=0nAA'9return '4return =0n-'9@=0n-;94[
Texto 2: Da<ascript minificado
// Fo*putes <i!onacci o= a gi7en nu*!er
=unction =i!onacci0nu*!er9 Z
i= 0nu*!er AA /9 return /4
i= 0nu*!er AA '9 return '4
return =i!onacci0nu*!er \ '9 @ =i!onacci0nu*!er - ;9
[
Texto 1: Da<ascript n%o minificado
D8H 7 #timiAar as Ima1ens
<_meras )oto&r)icas modernas s%o capa0es de salvar ima&ens muito &randes C uma
c_mera de LMP! por e,emplo! salva em dimens>es de 4L?5p, , 6K45p, C e com bai,a ta,a de
compress%o+ Vuanto maior a ima&em! maior ser o espa$o ocupado em disco! o "ue aumenta
o tempo de trans)erAncia+
No entanto! monitores s%o dispositivos de bai,a resolu$%o "uando comparado #
mdia impressa+ <erca de EL[ dos usurios utili0am resolu$>es in)eriores a 6DD5p, , K55p,
P@J/c(ools! 4564Q+ =esta )orma! devese redu0ir ao m,imo as ima&ens sem perder
"ualidade! diminuindo suas dimens>es para se ade"uar # p&ina+
Al9m de ter suas dimens>es redu0idas! a ima&em tamb9m pode ser comprimida+ 1
JPEM C )ormato das )oto&ra)ias C permite selecionar o nvel de compress%o+ Pelo )ato de ser
um )ormato lossy Pcom perdasQ! a "ualidade da ima&em comprimida 9 in)erior # ima&em
ori&inal+ <om isso 9 importante selecionar um nvel de compress%o "ue n%o piore
substancialmente a ima&em+
A aplica$%o cont9m I )oto&ra)ias "ue s%o carre&adas aleatoriamente na parte superior
de cada p&ina+ Um usurio "ue nave&ar por muitas p&inas eventualmente ter re"uisitado
todas as ima&ens+ Elas! em conjunto! tAm DII G'+ Vuando otimi0adas! JJ5 G' C ?E[ do
taman(o ori&inal PFi&ura 4KQ+
JJ
Figura 2.: /ompara$%o entre a <ers%o original 0superior1 e otimi>ada 0inferior1
Captu0o F 7 Resu0tados
F8/ 7 Comparao do $empo de Resposta de Diversos 'or;0oads
Ap8s a de)ini$%o dos casos de uso PAne,o IIQ! )oi veri)icada a car&a de trabal(o
m,ima "ue a aplica$%o com sua con)i&ura$%o padr%o responde sem de&radar o desempen(o+
=e 6L at9 ?5 clientes P&erando de 44L a K55 re"uisi$>es! respectivamenteQ! o
servidor respondeu de maneira previsvel C em torno de 6 se&undo+ No entanto! a partir de EL
clientes P664L re"uisi$>esQ! (ouve um &rande aumento do tempo de resposta e da sua
varia$%o+
A se&uir est%o apresentados &r)icos indicando o uso de <PU e de mem8ria do
servidor para cada uma das car&as+
JD
Figura !-: /ompara$%o do tempo de resposta da aplica$%o para di<ersos Eor;loads@ 'lano da
5'S F1-2"G
Figura !1: Uso de /'U e mem8ria para 1( clientes@ 'lano de =ospedagem: "1-2""
Para as trAs primeiras car&as C 6L! J5 e DL clientes ! o uso de <PU permaneceu
in)erior a ?5[ durante a maior parte do tempo! com poucos picos! "ue n%o ultrapassaram
IL[+ 1 uso de mem8ria aumentou linearmente+
JL
Figura !2: Uso de /'U e mem8ria para !- clientes@ 'lano de =ospedagem: "1-2""
Figura !!: Uso de /'U e mem8ria para "( clientes@ 'lano de =ospedagem: "1-2""
Figura !": Uso de /'U e mem8ria para ,- clientes@ 'lano de =ospedagem: "1-2""
Figura !(: Uso de /'U e mem8ria para +( clientes@ 'lano de =ospedagem: "1-2""
A partir de EL clientes! o aumento do tempo de resposta condi0 com o uso de <PU e
mem8ria observados+ Em diversos momentos! o uso de <PU atin&iu 655[ e o uso de
mem8ria apro,imouse do total disponvel C 654D M' PFi&uras JL e J?Q+ <om o es&otamento
de recursos! al&umas re"uisi$>es so)reram atrasos! resultando no aumento da m9dia do tempo
de resposta e do desvio padr%o+
Foi decidido )i,ar a car&a em ?5 clientes como par_metro de compara$%o entre as
aborda&ens para redu$%o do tempo de resposta+
F8- 7 Esca0amento Vertica0
Um dos m9todos mais comuns para se mel(orar o desempen(o de um sistema! 9
aumentar a disponibilidade dos recursos+ No caso de servi$os de (ospeda&ens de m"uina
virtuais! como Hinode e Ama0on @eb /ervices! si&ni)ica mi&rar para planos com mais tempo
de <PU e "uantidade de mem8ria+ 1s planos testados )oram: :;>B! :E@F! >;BG e B;HF!
detal(ados no Ane,o III+
<omo pode ser visto! a mi&ra$%o para planos com maior disponibilidade de recursos
surtiu e)eito na diminui$%o do tempo de resposta! tra0endoo para um patamar abai,o de 6
se&undo PFi&ura JEQ+ :ouve tamb9m a redu$%o da varia$%o+
J?
Figura !,: Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: "1-2""
Figura !+: /ompara$%o do tempo de resposta da aplica$%o para um Eor;load de ,- clientes
entre " planos de 5'S
Nos planos >;BG e B;HF! embora o uso de mem8ria ten(a permanecido inalterado! o
percentual do uso de <PU diminuiu! )icando em m9dia abai,o de D5[+ A compara$%o entre os
&r)icos desses planos e dos planos :;>B e :E@F su&erem "ue a disponibilidade de mais
tempo de <PU dos planos maiores! su)iciente para n%o causar picos de 655[! contribuiu para
o sistema responder mais rapidamente e consistentemente+
JE
Figura !2: Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: "1-2""
Figura !.: Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: "1(!,"
Figura "-: Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: "2-"2"
Figura "1: Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: ""-.,"
A permanAncia do tempo de resposta na casa de 5!K se&undos ap8s a mi&ra$%o do
plano >;BG para o plano B;HF demonstra "ue! para essa car&a! a )atia de <PU do plano 45DI
j 9 su)iciente para atender e)icientemente as re"uisi$>es+
F8< 7 #timiAaEes de &ouders
=esde 455E! "uando se tornaram pZblicas no Yahoo! &evelopers 'et1or*! al&umas
recomenda$>es passaram a ser ativadas na instala$%o padr%o dos servidores! como o uso do
cabe$al(o e)pires! eta"s e compress%o+ Para testar a contribui$%o dessas recomenda$>es! "ue
j vem ativadas! )oi e,ecutado um teste com cada uma delas desativadas+
*odos os testes )oram )eitos a partir do plano de :;>B+
F8<8/ 7 Menos Re=uisiEes
A m9dia do tempo de resposta n%o so)reu altera$%o si&ni)icativa com a redu$%o do
nZmero de re"uisi$>es+
F8<8- 7 Ca)ea03o E:pires Desa)i0itado
Ao desabilitar o cabe$al(o e)pires! os clientes precisaram re"uisitar componentes
e,ternos a cada p&ina :*MH! aumentando o volume de dados trans)erido+ <om isso! o
tempo de resposta aumentou e,pressivamente+
JI
Figura "2: /ompara$%o entre os tempos de resposta da aplica$%o implementando as
recomenda$Bes de Souders
F8<8< 7 Compresso Desa)i0itada
=esabilitar a compress%o aumentou timidamente o tempo de resposta+ 1 aumento na
varia$%o )oi alto devido # combina$%o de componentes &randes Pn%o comprimidosQ e a
e,istAncia de cac(es+ 1u seja! a primeira re"uisi$%o ao componente )oi demorada pois ele n%o
estava comprimido! necessitando maior tempo de trans)erAncia+ No entanto! re"uisi$>es
se&uintes n%o )oram necessrias uma ve0 "ue os componentes j estavam em cac(e+
F8<8? 7 Java&cripts e C&& Inline
A presen$a do J/ e <// inline )e0 com "ue os documentos :*MH se tornassem
maiores+ No entanto o aumento no tempo de resposta n%o )oi substancial+
F8<8D 7 Duas Consu0tas ao D*&
Ao aumentar o nZmero de domnios com o "ual a aplica$%o intera&e! )oi necessrio
reali0ar uma se&unda consulta ao =N/+ Ap8s reali0ar a resolu$%o do endere$o de domnio em
endere$o IP na primeira re"uisi$%o! as solicita$>es se&uintes n%o so)reram atrasos+ 1 impacto
)oi pe"ueno! mas n%o despre0vel+ Atualmente n%o ( motivos para servir componentes a
partir de mZltiplos domnios+
F8<8F 7 Java&cript e C&& Minificado
Mini)icar o J/ e <// surtiu pouco e)eito+ <omo! por padr%o! o mecanismo de
compress%o esteve (abilitado! a di)eren$a entre o ar"uivo mini)icado e ori&inal tornouse
pe"uena! "uando comparado ao total de taman(o da p&ina e seus demais componentes+ A
di)eren$a se tornou ainda mais despre0vel pelo )ato dos ar"uivos serem mantidos em cac(e
ap8s a primeira solicita$%o+
F8<8I 7 Eta1s Desa)i0itadas
Assim como no caso do cabe$al(o e,pires! desabilitar as eta"s! implicou na
reali0a$%o de trans)erAncias para componentes "ue j (aviam sido bai,ados anteriormente+
F8<8G 7 Ima1ens #timiAadas e &prites
Atrav9s da otimi0a$%o das ima&ens e enviandoas combinadas em um Znico ar"uivo
PspriteQ! )oi possvel atin&ir a menor m9dia de tempo de resposta+ No entanto! a redu$%o veio
ao custo do aumento da varia$%o+
<omo todas as )oto&ra)ias do site )oram combinadas em um Znico ar"uivo! a
re"uisi$%o pela p&ina inicial so)reu um &rande atraso+ J as p&inas se&uintes n%o tiveram
"ue reali0ar "ual"uer solicita$%o pelas )oto&ra)ias! pois o sprite j se encontrava em cac(e+
JK
F8<8H 7 Ima1ens #timiAadas
1timi0ar as ima&ens! mas envilas individualmente! resultou na redu$%o do tempo
de resposta e de sua varia$%o! "uando comparados com a con)i&ura$%o padr%o+
F8<8/. 7 $odas as RecomendaEes
Ao implementar todas as su&est>es de /ouders! )oi obtido o menor tempo de
resposta e varia$%o possveis+ A combina$%o de compress%o e mecanismos de cac(e s%o
essenciais para a redu$%o do volume de trans)erAncias! implicado no menor tempo de
doBnload dos componentes+
F8<8// 7 *en3uma Recomendao
Vuando nen(uma recomenda$%o )oi implementada! os componentes das p&inas n%o
s8 mantiveram seus taman(os ori&inais Pn%o comprimidosQ como tamb9m precisaram ser
trans)eridos novamente a cada solicita$%o! resultando em tempos de resposta acima de ?
se&undos+
D5
Figura "": Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: "1-2""@ *enos Re#uisi$Bes@
Figura "!: Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: "1-2""@ /onfigura$%o padr%o@
D6
Figura "(: Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: "1-2""@ Sem cabe$al=o "expires"@
Figura ",: Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: "1-2""@ Sem compress%o@
Figura "+: Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: "1-2""@ Sem Hr#ui<os Da<ascript e
/SS externos@
Figura "2: Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: "1-2""@ Duas consultas D7S@
D4
Figura ".: Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: "1-2""@ *inifica$%o de Da<ascript e
/SS
Figura (-: Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: "1-2""@ Sem ETags@
Figura (1: Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: "1-2""@ Imagens otimi>adas e
sprites@
Figura (2: Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: "1-2""@ Imagens otimi>adas@
1 uso de <PU e mem8ria permaneceram semel(antes C em torno de D5[ a I5[!
com picos de 655[! su&erindo "ue as otimi0a$>es n%o &eram impacto no uso dos recursos+
DJ
Figura (!: Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: "1-2""@ Todas as otimi>a$Bes@
Figura (": Uso de /'U e mem8ria para .- clientes@ 'lano de =ospedagem: "1-2""@ 7en=uma otimi>a$%o@
Conc0uso
1s resultados rati)icam as su&est>es de /ouders para a redu$%o do tempo de resposta+
Vuando nen(uma recomenda$%o esteve (abilitada! as respostas demoraram! em m9dia! ?
se&undos+ 1s mecanismos de cac(e desempen(aram o papel mais importante na redu$%o do
tempo de respostas! se&uidos pela compress%o+
Mecanismos de compress%o! como M0ip e =EFHA*E! por utili0arem al&oritmos sem
perdas! podem ser sempre ativados+ No entanto! cac(es! dependendo da aplica$%o! necessitam
de maior cautela+ Vuando um componente )or recebido junto de um cabe$al(o e)pires! o
nave&ador n%o e,itar em usar sua vers%o nas re"uisi$>es se&uintes C mesmo "ue a vers%o no
servidor ten(a sido alterada+ Para usar a vers%o em cache com a certe0a de "ue combina com
a vers%o do servidor! 9 necessrio usar eta"s+ No entanto! eta"s tamb9m devem ser usados
com cuidado! uma ve0 "ue um dos par_metros padr%o para sua cria$%o 9 o inode do ar"uivo+
Em sistemas distribudos! onde um componente pode residir simultaneamente em vrias
m"uinas para balancear a car&a! o uso do inode no clculo do eta" deve ser e,plicitamente
desativado+
1 tempo de resposta tamb9m )oi substancialmente redu0ido atrav9s de escalamento
vertical! demonstrando "ue s%o aborda&ens complementares pois incidem em di)erentes )ases
do ciclo de uma re"uisi$%o+
Escalamento vertical permite "ue mais clientes sejam atendidos simultaneamente
sem de&radar o desempen(o do servidor na &era$%o do :*MH PFi&uras 4E e JDQ+ J as
otimi0a$>es de /ouders redu0em o tempo de trans)erAncia &ra$as a diminui$%o da "uantidade
de dados tra)e&ados! seja redu0indo o taman(o da resposta! seja eliminando sua necessidade+
Portanto! usurios com pouca banda Pacesso m8vel ou discadoQ! s%o os mais bene)iciados
dessas otimi0a$>es+ Para usurios com bandas maiores! o &ar&alo residir no tempo de
processamento do servidor C para tais usurios! o escalamento vertical surtir mais e)eito+
/e&uindo a poltica de redu$%o do volume de dados trans)erido! t9cnicas como
AJAU! por permitirem "ue s8 )ra&mentos da p&ina sejam re"uisitados e trans)eridos! podem
mel(orar o tempo de resposta+ No entanto! 9 mais di)cil de ser implementada por"ue re"uer
altera$%o na camada de vis%o da aplica$%o+
Embora o @@@::Mec(ani0e )acilite a intera$%o com Beb sites! seu estado atual
)ornece pouco suporte a Java/cript! tornando aplica$>es "ue )a$am muito uso de Java/cript
di)ceis de serem avaliadas+ No entanto! se revelou uma boa )erramenta para &erar car&a
pro&ramada+
DD
Futuramente! um protocolo desenvolvido pelo Moo&le! poder vir a se tornar
popular+ 1 /P=] 9 um protocolo da camada de aplica$%o candidato a se tornar esbou$o para a
pr8,ima vers%o do :**P+ Ele modi)ica a maneira como re"uisi$>es e respostas de )orma a
serem mais e)icientes! mel(orando o tempo de carre&amento da p&ina em cerca de 4J[
PMoo&le! 455KQ+ Embora ainda esteja em desenvolvimento! al&uns sistemas em produ$%o!
como o Mmail e o mecanismo de busca do Moo&le! j utili0am desde "ue o nave&ador
suporte
6I
+
6I Atualmente Fire)o, 6D! <(rome 45 e Ama0on /ilG suportam /P=]
DL
Referncias (i)0io1rficas
ANA*EH+ Resolu$%o No LEL! 4566+
'ERNER/HEE! *im+ S'io&rap(FT! (ttp:22BBB+BJ+or&2People2'ernersHee2! iJUN24564j
<E*I<+br P4565Q! SPes"uisa /obre Uso das *ecnolo&ias da In)orma$%o e <omunica$%o no
'rasil 4565T! (ttp:22BBB+cetic+br2tic245652inde,+(tm! iMar24564j+
FRI/<:! kllen+ Essential /Fstem Administration+ Jrd Edition+ 1lReillF! 4554+
=EVEH1PHER! Moo&le P455KQ! S/P=] per)omance on mobile netBorGsT!
(ttp:22&oo&ledevelopers +blo&spot+ca2456425L2spdFper)ormanceonmobilenetBorGs+(tml
iJun24564j
IANA P4564Q! S/ervice Name and *ransport Protocol Port Number Re&istrFT!
(ttps:22BBB+iana+or&2assi&nments2servicenamesportnumbers2servicenamesport
numbers+t,t ! iJUN24564j
I*U P4565Q! SInternet UsersT! (ttp:22BBB+itu+int2I*U=2ict2statistics2material2 e,cel2
45652IndividualsUsin&Internet.5565+,ls iAbr24564j
d1RIER1d! <(arles M++ *(e *<P2IP Muide+ 6st Edition+ No /tarc( Press! 455L+
HIN=EN! Mre&+ SMarissa MaFer at @eb 4+5T! (ttp:22&linden+blo&spot+com+br2455?2
662marissamaFeratBeb45+(tml! iAbr24564j
NIEH/EN! JaGob P6KKJQ+ SResponse *imes: *(e J Important HimitsT!
(ttp:22BBB+useit+com2papers2responsetime+(tml! iMar24564j+
NIEH/EN! JaGob P6KKEQ+ S*(e Need )or /peedT! (ttp:22BBB+useit+com2alertbo,2 KE5Ja+(tml!
iMar24564j+
NIEH/EN! JaGob P455?Q+ SParticipation Ine"ualitF: Encoura&in& More Users to <ontributeT!
(ttp:22BBB+useit+com2alertbo,2participation.ine"ualitF+(tml! iMar24564j+
NIEH/EN! JaGob P455KQ+ SPoBers o) 65: *ime /cales in User E,perienceT!
(ttp:22BBB+useit+com2alertbo,2time)rames+(tml! iMar24564j+
NIEH/EN! JaGob P4565Q+ S@ebsite Response *imesT! (ttp:22BBB+useit+com2
alertbo,2responsetimes+(tml! iMar24564j+
D?
RA]M1N=! Eric /++ *(e Art o) Uni, Pro&rammin&+ 63 Edi$%o+ Addison@esleF! 455J+
Pdisponvel em (ttp:22catb+or&2gesr2Britin&s2taoup2Q
/IH'ER/<:A*R! Abra(am\ MAHVIN! Peter 'aer\ MAMNE! Mre&+ Fundamentos de
/istemas 1peracionais+ I3 Edi$%o+ H*<! 4565+
/INM:AH! Amit\ <U**/! Matt <utts+ OUsin& site speed in Beb searc( ranGin&O+
(ttp:22&oo&leBebmastercentral+blo&spot+com+br2456525D2usin&sitespeedinBebsearc(
ranGin&+(tml! iAbr24564j
/1U=ER/! /teve+ Even Faster @eb /ites: Per)ormance 'est Practices )or @eb =evelopers+
6st Edition+ 1lReillF! 455K+
/1U=ER/! /teve+ :i&( Per)ormance @eb /ites: Essential dnoBled&e )or FrontEnd
En&ineers+ 6st Edition+ 1lReillF! 455E+
@J< P6KKKQ+ SRF< 4?6? C :Fper*e,t *rans)er Protocol 6+6T!
(ttp:22BBB+BJ+or&2Protocols2r)c4?6?2r)c4?6?+(tml! iMaio24564j
@J*ec(+ S:istorical trends in t(e usa&e o) content mana&ement sFstems )or BebsitesT!
(ttp:22BJtec(s+com2tec(nolo&ies2(istorF.overvieB2 content.mana&ement2all! iMaio24564j
]a(oo^ =eveloper NetBorG+ S'est Practices )or /peedin& Up ]our @eb /iteT!
(ttp:22developer+Fa(oo+com2per)ormance2rules+(tml! iMar24564j+
DE
Ane:o I 7 &cripts para (enc3mar;
comma+&li+eparser.r"
require QoptparseQ
class Fo**andDineParser
attrWreader :options
@options
de= initiali)e09
@options A Z[
optparse A 5ptionParser(new do ]opts]
S Het a !anner? displayed at the top
S o= the help screen(
opts(!anner A Q+sage: !ench*ar: "options# =ileQ
S Ke=ault options
@options":concurrency# A '
@options ":runs# A '
@options ":resultsW=ile# A QresultsQ
@options ":useWcasesW=older# A QlocalhostQ
@options ":ti*e=ra*e# A 3/
@options ":=actor# A '
@options ":stress# A <,DH%
opts(on0Q-=Q? Q--=actor "=actor#Q? QFontinuously *ultiplies the use case !y
"=actor# until stress the ser7erQ9 Z ]=actor] @options ":=actor# A =actor(toWi [
opts(on0Q-tQ? Q--ti*e=ra*e "seconds#Q? Q"seconds# to send all requests in a gi7en
use case( 0de=ault: 3/ seconds9Q9 Z ]ti*e=ra*e] @options ":ti*e=ra*e# A ti*e=ra*e(toWi [
opts(on0Q-wQ? Q--wor:loads "=older#Q? QHpeci=ies =older containing wor:load^s use
casesQ9 Z ]=older] @options ":useWcasesW=older# A =older [
opts(on0Q-dQ? Q--delay "delay#Q? Q1aits "delay# *illiseconds =or each requestQ9
Z ]delay] @options ":delay# A delay(toWi [
opts(on0Q-rQ? Q--runs "runs#Q? Q2u*!er o= runsQ9 Z ]runs] @options ":runs# A
runs(toWi [
opts(on0Q-sQ? QstressQ? QFontinuously raises the stressQ9 Z @options ":stress# A
TR+% [
opts(on0Q-RQ? Q--results-=ile "=ile#Q? Q1rite log to =ileQ9 Z ]=ile] @options
":resultW=ile# A =ile [
opts(on0Q-hQ? Q--helpQ? QKisplay this screenQ9 Z puts opts4 e>it [
end
optparse(parseN
end
end
DI
+a,igatorsma+ager.r"
require Qna7igatorQ
require Q_a7aQ
require QreportQ
require QthreadQ
*odule La7aDang
includeWpac:age Q_a7a(langQ
end
class KispatchThread
include La7aDang::Runna!le
@na7igator
de= initiali)e0na7igator9
@na7igator A na7igator
end
de= run
@na7igator(sur=09
end
end
class 2a7igators-anager
@na7igators
@threads
@report
@rando*Wse*aphore
de= initiali)e09
@threads A "#
@na7igators A "#
@rando*Wse*aphore A -ute>(new
end
de= setup0wor:load9
S Hhu==les the use cases
wor:load(useWcases A wor:load(useWcases(sortW!y Z rand [
wor:load(useWcases(each do ]useWcase]
useWcase":nu*!erWo=Wusers#(ti*es do
@na7igators << createWna7igator0wor:load(=older? useWcase? wor:load(ti*e=ra*e?
wor:load(latencies"useWcase":=ro*##9
end
end
end
de= dispatch0ti*e=ra*e9
@na7igators(each do ]na7igator]
runner A La7a::La7aDang::Thread(new0KispatchThread(new0na7igator99
@threads << runner
na7igator(na*e A runner(getWna*e09
na7igator(rando*Wse*aphore A @rando*Wse*aphore
runner(start09
end
S La7a thread^s _oin e>pects ti*e in *illiseconds
@threads(each Z ]thread] thread(_oin0ti*e=ra*e B '///9 [
end
de= createWna7igator0=older? useWcase? ti*e=ra*e? latency9
na7igator A 2a7igator(new
na7igator(=ro* A useWcase":=ro*#
na7igator(latency A latency
na7igator(paths A loadWpathsWtoW=ollow0=older? useWcase9
na7igator(ti*e=ra*e A ti*e=ra*e
na7igator
end
de= loadWpathsWtoW=ollow0=older? useWcase9
paths A "#

useWcase":path#(each do ]pathW=ile]
DK
<ile(open0Qinputs/Q @ =older @ Q/Q @ pathW=ile? QrQ9 do ]=ile]
while line A =ile(gets
ne>t i= line(e*pty?
ne>t i= line(startWwith?0QSQ9
line A` /0$%T]P5HT]FDGFJ9:asB0(B9/
path A Z[
path":operation# A V'
path":argu*ent# A V;
paths << path
end
end
end
paths
end
de= =inalWreport09
@report A Report(new0@na7igators9
@report(=inalWreport09
end
end
L5
+a,igator.r"
require Q*echani)eQ
require Q_a7aQ
require Q!ench*ar:Q
require Qdigest/sha'Q
require QrequestQ
class 2a7igator
attrWaccessor :=ro*? :paths? :latency? :ti*e=ra*e?
:requests? :na*e? :rando*Wse*aphore? :responseWti*esWentireWrequests
@na*e
@agent
@currentWpage
@=ro*
@latency
@paths
@ti*e=ra*e
@requestsWcollection
@responseWti*esWentireWrequests
@rando*Wse*aphore
de= initiali)e09
@agent A -echani)e(new
@paths A "#
@latency A /
@ti*e=ra*e A /
@requests A "#
@responseWti*esWentireWrequests A "# S Ti*e ta:en =ro* the !egining o= the page
request until page^s last co*ponent^s download
end
de= sur=09
nu*!erWo=Wrequests A @paths(si)e S how *any pages he will sur=
ti*eslice A @ti*e=ra*e / nu*!erWo=Wrequests
@paths(each do ]path]
url A path":argu*ent#
httpW*ethod A path":operation#
S Hleeps a while in the !egining o= the ti*eslice
ti*eWre*aining A sleepW=orWaWwhile0ti*eslice9
S Ta:es the ti*e
startWti*eWentireWrequest A Ti*e(now09
S Htores request^s in=or*ation =or =uther use
request A Request(new0url? httpW*ethod9

S Hends the &TTP request =or the page
@currentWpage A sel=(send0request9
S Htores request^s in=or*ation =or =uther use
@requests << request
S Kownloads i*ages? css? _s o= current page
downloadWpageWco*ponents09

@responseWti*esWentireWrequests << Z :path A> url? :ti*e A> 0Ti*e(now09 -
startWti*eWentireWrequest9 [
S Hleeps the re*aining o= the ti*eslice
sleep0ti*eWre*aining9
end
end
de= sleepW=orWaWwhile0ti*eslice9
S -a:e sure threads aren^t with the sa*e rando* seed
ti*eWtoWsleep A /
@rando*Wse*aphore(synchroni)e Z ti*eWtoWsleep A rand0ti*eslice9 [
ti*eWre*aining A ti*eslice - ti*eWtoWsleep
sleep0ti*eWtoWsleep9

return ti*eWre*aining
L6
end
de= send0request9
!egin
request(setWsent09
S Hends the &TTP request =or the page
case request(*ethod09
when Q$%TQ
co*ponent A @agent(get0request(url9
when QP5HTQ
co*ponent A @agent(post0request(url9
end

S si*ulateWlatency09
request(setWrecei7ed0co*ponent9
return co*ponent
rescue
puts QFouldn^t =etch SZrequest(url[Q
end
end
S =etch i*ages? _s and css
de= downloadWpageWco*ponents09
downloadWlin:s A co*ponentsWlist09
downloadWlin:s(each do ]lin:]
!egin
S Kownloads co*ponent only i= cache *iss
unless inWcache?0lin:9
request A Request(new0lin:? Q$%TQ9
co*ponent A sel=(send0request9
@requests << request
else
updateWcacheWhitWcount0lin:9
end
rescue
S T5K5: %>ception
end
end
end
de= inWcache?0lin:9
@requests(each Z ]request] return true i= request(url AA lin: [
return =alse
end
de= updateWcacheWhitWcount0lin:9
@requests(each Z ]request] request(cacheWhitWcount A request(cacheWhitWcount @ ' i=
request(url AA lin: [
end
S +p to now? only downloads i*ages
de= co*ponentsWlist09
co*ponents A "#
co*ponents(concat0i*ageWlist099
co*ponents(concat0_a7ascriptWlist099
co*ponents(concat0cssWlist099
return co*ponents
end
de= i*ageWlist09
list A "#
@currentWpage(i*ages(each Z ]i*age] list << i*age(node(attri!utes"QsrcQ#(7alue [
return list
end

de= _a7ascriptWlist09
return @currentWpage(!ody(scan0/http:a/a/(Ba(_s/9
end
de= cssWlist09
L4
return @currentWpage(!ody(scan0/http:a/a/(Ba(css/9
end
de= si*ulateWlatency09
sleep0@latency9
end
de= na7igatorWnu*!er09
sel=(na*e(split0Q-Q9"'#(toWi
end
end
LJ
---"e+ch.r"
require Qru!yge*sQ
require QoptparseQ
require Qwor:loadWloaderQ
require Qco**andWlineWparserQ
require Qna7igatorsW*anagerQ
require Qna7igatorQ
S Fo**and line argu*ents parsing
options A Fo**andDineParser(new(options09
li*it A '
li*it A '/ i= options":stress#
'(upto0li*it9 do ]=actor]
S Hets up the wor:load !ased on the selected =older
wor:load A 1or:loadDoader(new(createWwor:load0options? =actor9
S Kisplays latencies and do*ains
wor:load(displayWtopology09
S Hets up the na7igator *anager
*anager A 2a7igators-anager(new09
S Freates the na7igators
*anager(setup0wor:load9
S Runs the !ench*ar:
*anager(dispatch0options":ti*e=ra*e#9
S Prints =inal report
*anager(=inalWreport09
end
LD
-or#loa&loa&er.r"
require Qwor:loadQ
require QpingQ
class 1or:loadDoader
@wor:load
de= createWwor:load0options? =actor9
@wor:load A 1or:load(new
loadWuseWcasesW=ile0options":useWcasesW=older#9
@wor:load(ti*e=ra*e A options":ti*e=ra*e#
@wor:load(useWcases(collectN do ]useWcase]
useWcase":nu*!erWo=Wusers# A useWcase":nu*!erWo=Wusers# B =actor
useWcase
end
@wor:load
end
de= loadWuseWcasesW=ile0=older9
!egin
<ile(open0Qinputs/Q @ =older @ Q/wor:loadQ? QrQ9 do ]=ile]
@wor:load(=older A =older
while line A =ile(gets
line A line(strip(gsu!0QatQ? Q Q9(squee)e0Q Q9 S Flears line^s whitespace
ne>t i= line(e*pty?
ne>t i= line(startWwith?0QSQ9
setWlatency0line(split0Q Q99 i= line(startWwith?0QD,T%2FOQ9
setWuseWcase0line(split0Q Q99 i= line A` /0bad9/
end
end
rescue %rrno::%25%2T
puts Q+se cases =ile not =oundQ
end
S Try to =igure lantencies o= do*ains which were not speci=ied in con=ig =ile
@wor:load(useWcases(each do ]useWcase]
@wor:load(latencies"useWcase":=ro*## A disco7erWlatency0useWcase":=ro*#9 unless
@wor:load(latencies(include? useWcase":=ro*#
end
end
de= setWlatency0args9
=ro* A args"'#
latency A args"E#

@wor:load(latencies"=ro*# A latency(toW= / '/// S *illiseconds to seconds
end
de= setWuseWcase0args9
useWcase A Z[
useWcase":nu*!erWo=Wusers# A args"/#(toWi
useWcase":=ro*# A args"'#
useWcase":path# A args";((-'#
@wor:load(useWcases << useWcase
end
de= disco7erWlatency0=ro*9
!egin
print QPing SZ=ro*[: Q
pingWresponse A cping -c 6 SZ=ro*[c
latencies A pingWresponse(scan0/ti*eA0(B9 *s/9
latencyWsu* A /
latencies(each Z ]latency] latencyWsu* A latencyWsu* @ latency"/#(toW= [
puts 0latencyWsu* / latencies(si)e9(toWs @ Q *sQ
return 0latencyWsu* / latencies(si)e9 / '/// S *illiseconds to seconds
rescue
puts Q/( Fouldn^t disco7er latency o= SZ=ro*[( -ay!e the do*ain isn^t accepting
GF-P pac:etsQ
return /
end
LL
end
end
L?
-or#loa&.r"
class 1or:load
attrWaccessor :=older? :useWcases? :latencies? :ti*e=ra*e
@=older
@useWcases
@latencies
de= initiali)e09
@useWcases A "#
@latencies A Z[
end
de= displayWtopology09
print QDatencies: Q
pp @latencies
puts
end
de= totalWo=WpageWrequests09
total A /
useWcases(each Z ]useWcase] total A total @ useWcase":nu*!erWo=Wusers# B
useWcase":path#(si)e [
return total
end
end
LE
re./est.r"
class Request
attrWaccessor :url? :*ethod
@url
@*ethod
@!ytesWrecei7ed
@type
@start
@stop

de= initiali)e0url? *ethod9
@url A url
@*ethod A *ethod
end
de= setWsent09
@start A Ti*e(now09
end
de= setWrecei7ed0co*ponent9
@!ytesWrecei7ed A co*ponent(response"Qcontent-lengthQ#(toWi
@stop A Ti*e(now09
end
de= responseWti*e09
return @stop - @start
end
end
LI
Ane:o II 7 Casos de Uso
1s <asos de Uso )oram de)inidos se&uindo a propor$%o de K5[ de leitores e 65[ de
autores PNIEH/EN! 455?Q+
Tabela ,: /asos de Uso dos Testes
Caso de Uso 5re=uncia
P&ina principal! sai+ 65 [
P&ina principal! primeira notcia! sai+ 65 [
P&ina principal! primeiras J notcias! sai+ 65 [
Favorito direto para uma p&ina+ 65 [
P&ina principal! primeira notcia! comenta! sai+ 65 [
P&ina principal! primeiras J notcias! comenta! sai+ 65 [
P&ina principal! busca por t8pico! primeira notcia+ 65 [
P&ina principal! reali0a uma busca! primeiro resultado! sai+ 65 [
P&ina principal! reali0a uma busca! primeiros J resultados! sai+ 65 [
P&ina principal! se identi)ica! insere um novo te,to! sai+ 65 [
LK
Ane:o III 7 Confi1urao das M=uinas Virtuais
Tabela +: /onfigura$%o das m)#uinas <irtuais utili>adas
*ome $empo de C%U
/H
Mem@ria %reo mensa0
serverJ. L [ 654D M' Uh JK
serverJ/ ?[ 6LJ? M' Uh LK
serverJ- 65 [ 45DI M' Uh EK
serverJ< 45 [ D5K? M' Uh 6LK
c0ient L [ 654D M' Uh JK
6K IntelPRQ UeonPRQ <PU HLL45f4+4EM:0 PVuad<oreQ
?5
Ane:o IV 7 Insta0ao do &istema
Ap8s a instala$%o bsica do Ubuntu /erver 64+5D H*/! os se&uintes comandos )oram
inseridos no terminal da m"uina servidora+
Vsudo apt-get install apache *ysql-ser7er php php-*ysql li!apache-php
Vwget http://www(wordpress(org/latest(tar(g)
Vtar ->)7= latest(tar(g)
V*7 wordpress /7ar/www
?6

S-ar putea să vă placă și