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 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