Você está na página 1de 68

Fundamentos

Stress-test

Pr-requisitos do Tutorial .............................................................................................................. 2 Objetivos do Tutorial ..................................................................................................................... 2 Fundamentos do Stress-test ......................................................................................................... 3 Ol Mundo Stress-test ............................................................................................................... 5 Monitorao............................................................................................................................ 5 Arquitetura.............................................................................................................................. 5 JMeter .................................................................................................................................... 6 Metodologia para Teste de Capacidade.................................................................................... 9 Formulrio de Anlise de Requisitos no-funcionais .............................................................. 10 Perguntas disertativas.......................................................................................................... 10 Distribuio de utilizao da soluo por use-case............................................................. 11 Clculo de Volume de Dados por Entidade ......................................................................... 11 Identificao de Cenrios Atipicos .......................................................................................... 12 Tabela de Mapa de Riscos ...................................................................................................... 13 Melhores prticas na captura de requisitos para testes.......................................................... 14 Planejamento de Testes de Capacidade .................................................................................... 15 Exemplo de Proposta de Planejamento de Testes ................................................................. 16 Ferramenta JMeter .................................................................................................................. 18 Download e instalao ......................................................................................................... 18 Inicializando o JMeter .......................................................................................................... 19 Criando um Plano de Testes................................................................................................ 20 Elementos JMeter.................................................................................................................... 21 Utilizando Elementos Bsicos ................................................................................................. 22 Elemento Test Plan.............................................................................................................. 23 Config Element..................................................................................................................... 25 Thread Group ....................................................................................................................... 27 Sampler ................................................................................................................................ 29 Listeners............................................................................................................................... 32 Logic Controller .................................................................................................................... 35 Elementos Avanados ............................................................................................................. 38 Assertions............................................................................................................................. 38 Pre Processors..................................................................................................................... 41 Post Processors ................................................................................................................... 44 Timers .................................................................................................................................. 45 Monitorao de Ambiente de Testes .......................................................................................... 47 Protocolo SNMP ...................................................................................................................... 48 Agente SNMP ...................................................................................................................... 50

Fundamentos

Stress-test

Gerente SNMP..................................................................................................................... 50 Management Information Base ............................................................................................ 50 Operaes SNMP ................................................................................................................ 52 Segurana e caractersticas tcnicas do SNMP.................................................................. 52 Ferramentas Comerciais de Monitorao ............................................................................... 53 Ferramentas no-comerciais de Monitorao ..................................................................... 54 Plano de Capacidade e Relatrio de Concluses ...................................................................... 57 Analise de Requisitos no-funcionais...................................................................................... 58 Perguntas ............................................................................................................................. 58 Distribuio de utilizao da soluo por use-case............................................................. 59 Clculo de Volume de Dados por Entidade ......................................................................... 59 Documentao do Ambiente Fsico......................................................................................... 60 Documentao do Ambiente Lgico........................................................................................ 61 Detalhes do Plano de Stress-test ............................................................................................ 62 Informaes Coletadas na Monitorao do Ambiente ............................................................ 65 Relatrio de Concluses.......................................................................................................... 66 Plano de Capacidade e Recomendaes ............................................................................... 68 Pr-requisitos do Tutorial Lgica de programao; Orientao a objetos; Conhecer plenamente a linguagem Java; Conhecimento bsico de XML; Banco de dados relacional; UML; Computao distribuda; TCP/IP Sockets, RMI e CORBA (nvel bsico)

Objetivos do Tutorial Aprensentar tcnicas e metodologia para captura de requisitos no-funcionais alm de abordar tecnicamente a ferramenta Apache JMeter.

Fundamentos Fundamentos do Stress-test

Stress-test

O principal objetivo de executarmos testes de stress em solues para assegurar que a arquitetura desenvolvida para atender a soluo realmente consegue responder a quantidade de usurios previstos para acessar o aplicativo. Para executar um teste de stress temos diversas tarefas para cumprir, devemos seguir um procedimento ou metodologia adequada para o cenrio em questo. Atualmente no contamos com muitos padres na indstria. O que temos so tecnologias isoladas que se destacam como SNMP para monitorao, JMeter como ferramenta open-source de stress, entre outros. Podemos dividir o teste de stress em cinco partes: 1. Metodologia Prev forma de captar dados e requisitos no-funcionais como nmero mximo de usurios simultneos, curva de crescimento para prximos dois anos, distribuio dos acessos durante o dia, distribuio dos acessos durante a semana entre outros servem como dados de entrada para conhecer os resultados esperados pelo aplicativo. Muitos destes dados so capturados antes mesmo de iniciar o desenvolvimento da soluo e so vitais para a escolha da arquitetura. No momento do teste de stress devemos confirmar se as decises e escolha de componentes atingiu os objetivos no-funcionais. Sua equipe deve prever uma ateno especial para estes dados na metodologia utilizada para captura de requisitos. 2. Planejamento Escolher processos para o teste, preencher a base de dados com amostras bem prximas dos dados reais, projetar a quantidade de dados e crescimento de base de dados, consumo de banda, entre outros podem ser cruciais no sucesso final de um projeto. Conhecer de perto as necessidades de trfego e armazenamento de dados, ajuda nas previses e planejamento de testes. Tecnicamente montamos scripts em endpoints de stress disparamos este script de forma cclica at atingir o resultado de bombardeio esperado.

Fundamentos 3. Monitorao

Stress-test

De nada vale um teste de stress se no conhecermos o quanto determinada quantidade de usurios est consumindo do ambiente. Os principais dados que devemos observar nos componentes participantes da soluo so: Consumo de memria dos servidores; Consumo de CPU(s) dos servidores; I/O de rede entre container e banco de dados; I/O de rede entre web e container de EJBs I/O de disco em todos servidores; Swap de memria;

4. Plano de capacidade Com a coleta dos dados na etapa de monitorao Vs. nmero de acessos projetados, podemos traar um plano de capacidade e entender a curva de escalabilidade da soluo assim como planejar novas aquisies e upgrades a medida que o software vai sendo utilizado. 5. Concluso O relatrio de concluso vai documentar para o cliente da soluo a real capacidade do software desenvolvido. No relatrio voc deve anexar principais amostras de dados de monitorao. Vamos estudar detalhadamente cada passo do stress-test e no trmino deste mdulo voc estar apto a desenvolver um aplicativo, desde a arquitetura at o stress-test.

Fundamentos Ol Mundo Stress-test

Stress-test

Para entendermos os principais conceitos de monitorao e planejamento de testes vamos desenvolver um teste rpido e simples utilizando monitorao bsica e a ferramenta JMeter. Monitorao Para monitorar o consumo do servidor Linux, utilizaremos o seguinte comando:
vmstat 1 > resultado.txt

vmstat = comando que apresenta consumo de CPU, memria e I/O 1 = atualizao de 1 em 1 segundo > resultado.txt = todo redirecionamento para este arquivo Arquitetura Vamos trabalhar com a arquitetura do laboratrio 4 do mdulo 1 (AA1 lab04-sol) e vamos utilizar a arquitetura do laboratrio 13 do mdulo 3 (AA3 lab13). A principio vamos manter todos os containers na mesma mquina: jboss, mysql e ferramenta de stress. A medida que voc for progredindo desacople a ferramenta de stress (JMeter) da mquina do usurio.

Fundamentos JMeter

Stress-test

1. Faa instalao do JMeter descompactando seu arquivo ZIP (informe-se com o instrutor sobre a URL) 2. Execute o script jmeter no diretrio bin;

3. Clique o boto direito em Test Plan -> Add -> Thread Group

4. Configure Name para Usurios 1, Nmero de Threads para 10, Ramp-up Period para 3 e Loop Count para 10.

Fundamentos

Stress-test

5. Clique o boto direito na Thread Group recm nomeada para Usurios 1 e selecione: Add -> Sampler -> HTTP Request

Preencha os dados colocando uma URL vlida que faa o acesso ao command que lista os cursos.

Fundamentos

Stress-test

6. Clique novamente o boto direito na Thread Group Usurios 1 e selecione Add -> Listener -> Graph Full Results, Graph Results, Simple Data Writer e mais os que voc desejar. Estes componentes so visualizadores dos resultados.

7. Acione o comando de monitorao vmstat e inicie os testes. Assim que finalizar pare o comando de monitorao com control + c, analise o consumo de CPU versus o resultado do JMeter.

Fundamentos Metodologia para Teste de Capacidade

Stress-test

Devemos ficar atentos durante toda a fase de execuo do projeto em aspectos que podero afetar as etapas de teste de capacidade. Existem diversos questionamentos que devemos fazer na fase de captura de requisitos no-funcionais para podemos projetar a arquitetura, valid-la com teste de capacidade e tambm traarmos um plano de crescimento.

EJB? BMP? CMP? MDB?

Web? Browser? Applet Swing?

Strtus? Hibernate? Commons? Cocoon?

HTTPS? LDAP? Declarativa? Programada?

Arquitetura Fsica & Tcnica

Requisitos no-funcionais
Acessos por dia Disponibilidade Picos Distribuio Plano de crescimento

Use-cases
O que fazer Detalhes de interao O que entra O que sa Se der errado

Teste de Teste de Stress e Capacidade Funcionalidades


Caixa preta

Fundamentos Formulrio de Anlise de Requisitos no-funcionais

Stress-test

Nome do Projeto: Estudo de Caso Academia do Arquiteto Data coleta dos dados: 1/1/2000

Perguntas disertativas Qual a demanda prevista para usar a soluo? R. 200 acessos por dia em mdia. Existe possibilidade de picos? Se sim, qual o pico previsto? R. Sim. Podemos chegar a um pico de 100 usurios simultneos. Qual o tempo de resposta desejado? R. O nvel ideal de trabalho que o usurio no espere mais do que 2 segundos por cada resposta. Os acessos durante o dia vo se concentrar mais em um horrio especfico? R. Sim, 80% devem ocorrer entre as 11:00 e 21:00. Existe um nivelamento no acesso durante a semana ou existe um perodo de maior concentrao? R. Segundas e teras, acesso baixo, 100 acessos por dia. Quartas, quintas, mdio acesso com 150 acessos por dia. Sextas e sbados, pico de 300 acessos por dia. Domingo, 200 por dia. Quanto seu negcio tende a crescer no prximo ano e no ano seguinte dentro do cenrio otimista do seu business plan? R. Pretendemos crescer 15% neste ano e 30% no prximo. O negcio que a soluo atende pode apresentar variaes extremas e situaes atpicas com que grau de freqncia? R. 5%.

10

Fundamentos Distribuio de utilizao da soluo por use-case

Stress-test

Nesta tabela o solicitante deve informar a previso de uso das funcionalidades para que voc consiga planejar scripts que simulam a realidade. De nada vale testar nosso estudo de caso com a entidade Curso se considerarmos os valores relacionados abaixo: Use-case Secretaria mantm cursos (adiciona, exclui, inclui e pesquisa) Secretaria mantm turmas (criao de turmas, excluso, matrcula de alunos e modificao de matrculas) Secretaria mantm memberships Alunos se cadastram no sistema via Web Alunos efetuam matrculas via Web Clculo de Volume de Dados por Entidade Nesta etapa o solicitante / cliente dever informar o volume esperado de dados por entidade para no mnimo os prximos dois anos. Procure facilitar o trabalho entregando no formulrio a tabela j preenchida com as entidades identificadas na etapa de captura. Este dado vai indicar tambm a integridade das informaes respondidas nas perguntas disertativas. Entidade Curso Membership Turma Matricula Atual 25 4000 40 600 Ano 1 35 6000 100 1800 Ano 2 50 8000 300 4000 50% 5% 5% 35% % de acesso 5%

11

Fundamentos Identificao de Cenrios Atipicos

Stress-test

Devemos considerar tambm que uma soluo nunca utilizada de forma linear, ou seja, quase todo negcio apresenta momentos onde a maior demanda por um grupo de entidades e use-cases aumenta brutalmente enquanto outras so menos requisitadas. Devemos tentar levantar cuidadosamente situaes atpicas que acontecem no domnio de negcio onde a soluo est atuando: Em um software de gesto empresarial, as entidades de recursos humanos sero mais acessadas no final e incio do ms; Um site de e-commerce pode oferecer uma promoo como nunca fez anteriormente causando um pico no previsto de 10 vezes mais usurios que o previsto; Em uma escola as entidades de matrcula e operao de incluso so mais acessadas, causando um aumento nos outputs e reduo nos inputs do sistema; Uma montadora comete um erro tcnico e vende 200.000 mil carros com defeito e precisa elaborar uma ao de recall que vai demandar muito mais do seu sistema de gesto do que antes; Procure sempre identificar os fatores de risco nos use-cases do projeto. Faa uso de mtricas sugeridas por metodologias para aferir o mapa de riscos do cenrio. Como resultado do seu Teste de Capacidade voc pode indicar a compatibilidade da soluo com tais situaes e recomendar arquiteturas alternativas de fcil adaptao para o projeto. Isso refora a importncia de um processo de captura de requisitos ideal. O bom analista no s recolhe informaes relevantes como antecipa problemas atravs da otimizao dos seus processos de captura de requisitos.

12

Fundamentos Tabela de Mapa de Riscos

Stress-test

A entrega para o cliente deve ser uma especificao relacionando situaes que podemos chamar de cenrios. Futuramente utilizaremos os cenrios para especificar planos especficos e estudarmos arquiteturas alternativas e necessidade de flexibilizao da soluo. Risco identificado poca de Matrcula Documentao A empresa fornece mini-cursos gratuitos e repentinamente pode ter picos atpicos com lanamentos e anncios na mdia.

13

Fundamentos

Stress-test

Melhores prticas na captura de requisitos para testes Na prtica costumamos lidar com dois tipos de cenrios que atuam em pontos extremos e raramente vemos o terceiro cenrio: Cenrio 1: no existe nenhuma ou quase nenhuma preocupao quanto ao desempenho e performance do sistema pois no existe nenhum gargalo aparente. Cenrio 2: existe uma chocante necessidade de uso em escala extrema e toda a concentrao da equipe fica voltada para a capacidade de processamento, prejudicando o andamento das funcionalidades de negcio. Cenrio 3: existe um equilbrio entre produzir o software e garantir que suas funcionalidades atendam a demanda esperada. Somente a metolodia, experincia e conhecimento de processos conseguem garantir tal equilbrio. Devemos sempre procurar um ponto de equilbrio e sempre validar novas situaes e novas arquiteturas que planejamentos ainda que informalmente. Desenvolver uma prova conceitual e promover um laboratrio no seu computador pessoal pode passar uma noo e feeling do comportamento da sua idia no ambiente real. Preocupe-se com as informaes sobre a demanda de forma mais abrangente que seu solicitante. No se responsabilize totalmente pelo teste em caso de ausncia de informaes vitais para arquitetura e teste de capacidade. Sempre que possvel, desenvolva provas de conceito com mais de uma arquitetura e execute teste de capacidade com peas conceituais. Anexe no resultado final toda a especificao coletada com seu cliente, configurao de ambiente de teste, verso do cdigo utilizado e resultados de consumo de hardware.

14

Fundamentos Planejamento de Testes de Capacidade

Stress-test

Alimentamos a fase de planejamento de testes com dados capturados na etapa que apresentamos anteriormente. As respostas para os questionrios propostos fornecero uma boa base para o planejamento do teste. O planejamento dos testes o resultado da analise dos dados coletados. Vejamos algumas informaes relevantes para o teste, que capturamos com os questionrios: A arquitetura deve atender 100 acessos simultneos no startup do projeto; Devemos projetar a arquitetura para escalar para 115 acessos simultneos no primeiro ano, e no segundo para 150 acessos simultneos: Escala em 2 anos = ((USUARIOS_ATUAIS + CRESC_ANO1) + CRESC_ANO2%) Escala em 2 anos = ((100 + 15%) + 30%) = 150 usurios. Devemos chegar em uma concluso de hardware e arquitetura necessria para a demanda atual e devemos tambm recomendar como aumentar a capacidade dos servidores para a demanda nos prximos dois anos. Nosso principal foco so as turmas e matrculas;

O planejamento gera um documento que representa um delivery para seu cliente. Neste documento voc deve sintetizar suas concluses e deve propor unidades de trabalho que representem as atividades dos usurios.

15

Fundamentos Exemplo de Proposta de Planejamento de Testes

Stress-test

Cenrio de Uso Comum Incidncia Global Incidncia local Ao Actor Etapas

Use-case: Secretaria mantm cursos 35% 35% Cadastrar novo membership 35% Alterar dados de membership Secretaria Secretaria Request de form Submit de form Load dos memberships Edit membership Submit de form 5% Excluso de memberships Secretaria Load Edit Delete 25% Visualizao de dados Secretaria Load Edit Use-case: Secretaria mantm turmas 50% 5% Matricular membership Secretaria Load das turmas Edit turma Adicionar matricula Submit matricula Load turma 5% Excluir matricula Secretaria Load das turmas Edit turma Excluir turma Load das Turmas 5% Alterar matrcula dados da Secretaria Load das turmas Edit Turma Submit Turma Load das turmas 5% Criao de turmas Secretaria Request de form Submit de form 80% Visualizao de turmas e matrculas Secretaria Load das turmas Edit turma

*Vamos considerar a operao de login como aleatria, pois no temos 1 login por operao.

16

Fundamentos

Stress-test

Cenrio: poca de Matrculas Incidncia Global Incidncia local Ao Actor Etapas

Use-case: Secretaria mantm cursos 35% 60% Cadastrar novo membership 25% Alterar dados de membership Secretaria Secretaria Request de form Submit de form Load dos memberships Edit membership Submit de form 5% Excluso de memberships Secretaria Load Edit Delete 10% Visualizao de dados Secretaria Load Edit Use-case: Secretaria mantm turmas 50% 50% Matricular membership Secretaria Load das turmas Edit turma Adicionar matricula Submit matricula Load turma 5% Excluir matricula Secretaria Load das turmas Edit turma Excluir turma Load das Turmas 15% Alterar matrcula dados da Secretaria Load das turmas Edit Turma Submit Turma Load das turmas 5% Criao de turmas Secretaria Request de form Submit de form 25% Visualizao de turmas e matrculas Secretaria Load das turmas Edit turma

*Vamos considerar a operao de login como aleatria, pois no temos 1 login por operao.

17

Fundamentos Ferramenta JMeter

Stress-test

JMeter um software open-source mantido pelo grupo Jakarta Apache que tem a capacidade de executar plano de testes configurados atravs da sua ferramenta grfica. Podemos utilizar o JMeter para teste de performance de aplicativos para simular uma demanda. Tambm possvel adapt-lo para trabalharmos com testes de caixa preta. Algumas caractersticas que tornam o JMeter uma ferramenta gratuita de alto valor agregado: Pode executar testes atravs Samplers para HTTP, FTP, SOAP, JDBC, LDAP ou Java; 100% escrito em Java, provendo portabilidade entre plataformas; Interface grfica elaborada com Java Swing; Ferramenta Multithreading de teste permitindo que uma s mquina simules muitas requisies simultaneamente; Log de resultados para analise off-line e cach para analise on-line; Alta extensibilidade: o o Permite o desenvolvimento de novos Samplers; Permite o desenvolvimento de novos plug-ins de anlise;

Estatsticas e grficos on-line;

Download e instalao O download pode ser feito atravs do site do grupo Apache: http://jakarta.apache.org Faa do download de uma verso binrio no format ZIP. Trabalhamos atualmente com a verso 1.9.1 na Academia do Arquiteto. Caso esta verso tenha sido atualizada o instrutor notificar. Descompacte o arquivo ZIP no diretrio de preferncia. A instalao est concluda, vale lembrar que a ferramenta totalmente dependente do ambiente Java 2 1.4 Standard Edition.

18

Fundamentos Inicializando o JMeter

Stress-test

A seguinte estrutura de diretrios ser criada no local de descompactao do arquivo de instalao do JMeter:

Navegue para o diretrio bin e no ambiente Unix digite:


java jar ApacheJMeter.jar

No ambiente Windows digite:


jmeter.bat

19

Fundamentos Criando um Plano de Testes

Stress-test

Ao inicializarmos o JMeter a seguinte interface ser apresentada:

Temos, portanto no lado esquerdo uma rvore de elementos (JTree) uma representao dos elementos que compem nosso plano de testes. Dois itens principais so apresentados na raiz da nossa rvore, por padro, com os seguintes nomes: 1. Test Plan: agrupa itens que representam a simulao de mltiplos usurios no plano de testes (samplers), alm de configuradores e controladores de lgica de execuo do teste. 2. WorkBench: rea de trabalho para armazenamento temporrio de elementos. Os itens associados este elemento no so considerados como parte do plano de testes. Os elementos dentro da rvore so adicionados de forma ordenada e hierrquica. Determinados elementos so sensveis hierarquia e / ou a ordem em que eles se encontram na rvore.

20

Fundamentos Elementos JMeter

Stress-test

Um plano de testes composto por diversos elementos que representaro os usurios acessando a soluo e tambm configuraes, visualizadores de resultados entre outros. Tipo de Elemento Test Plan Workbench Descrio Representa seu plano e todos seus elementos. rea temporria de trabalho que apia o desenvolvimento do plano de testes. Thread Groups Representa um grupo de usurio executando determinada(s)

solicitao(es). Samplers Representa uma solicitao. O JMeter suporta solicitaes para HTTP, FTP, SOAP, JDBC, LDAP e Java. Elementos do tipo Sampler so adicionados em um Thread Group. Logic Controllers Representam elementos que ajudam a controlar a execuo das requies atravs de repetidores, mdulos, randomizao entre outros. Listener Elementos que visualizam resultados que podem ser representados por grficos, tabelas, entre outros. Configuration Elements Para configurao padro de dados. Com eles conseguimos, por exemplo, configurar o mesmo servidor HTTP para uma determinada solicitao. Assertions Pre Processors Elementos que possibilitam diversas verificaes nas respostas obtidas. Elementos que podem produzir dados para enviar como parte de uma solicitao. Por exemplo, em teste de uma rotina de incluso de dados no sistema, devemos alternar alguns dados que so exclusivos por definio. Temos pr-processadores que so capazes de gerar: nome_1, nome_2, nome_3, etc. Post Processors Processadores de resultados de requisies programadas. Pode extrair uma determinada parte da resposta do servidor utilizando expresses regulares. Timer Elementos que permitem um controle avanado no intervalo de execucao das requisies.

21

Fundamentos Utilizando Elementos Bsicos

Stress-test

Os elementos apresentados na tabela podem devem ser colocados no seu plano de testes dentro de uma determinada hierarquia obrigatria. A tabela a seguir, documenta quais elementos podem ser adicionados em quais elementos. Elemento Test Plan Elementos que podemos adicionar como filho / child Thread Group, Listeners, Config Element, Assertions, Pre

Processor, Post Processor, Timer Workbench Thread Group Logic Controller, Sampler, Config Element, Nom-Test Elements Logic Controller, Listener, Sampler, Timer, Config Element, Pre Processor, Post Processor Sampler Logic Controller Config Element, Assertion, Timer, Pre Processor, Post Processor Logic Controller, Sampler, Config Element, Timer, Listener, Pre Processor, Post Processor

Listener Configuration Elements Assertions Pre Processors Post Processors Timer

Nenhum Nenhum

Nenhum Nenhum Nenhum Nenhum

22

Fundamentos Elemento Test Plan

Stress-test

Representa seu plano e todos os elementos que o compe. Podemos configurar variveis globais, chamadas de User Defined Variables.

Posteriormente, podemos utilizar a varivel atravs de ${ctx}

Execuo de teste funcional (caixa preta). Far que o JMeter armazene o resultado das requisies enviadas para o servidor.

Se selecionado, executa cada grupo Group) de em usurios (Thread do seqncia,

contrrio, executar as Thread Groups de forma paralela.

23

Fundamentos Workbench

Stress-test

rea temporria de trabalho, voc pode mover temporariamente elementos para esta rea, copiar e colar etc. No salvo juntamente com o Test Plan, voc deve salvar manualmente clicando o boto direito do mouse no item e escolhendo Save As... O Workbench no tem efeito sobre seu plano de testes, ou seja, exerce meramente a funo de apoio para o desenvolvimento do plano de testes.

24

Fundamentos Config Element

Stress-test

Como seu prprio nome afirma, so elementos de configurao do nosso plano de testes. Com eles podemos tornar nosso plano mais flexvel e com informaes componentizadas. Os Config Elements mais utilizados so os que definem padres de configurao para tarefas. Por exemplo, quando estressamos um aplicativo Web, temos a necessidade de acionar diversas vezes um mesmo controller passando somente parmetros diferentes. Neste caso, com um elemento HTTP Requests Default, estabelecemos o nome de servidor padro, porta, protocolo e URL e nas tarefas definimos somente os parmetros de acionamento do Controller.

Notem que atribumos como protocolo padro HTTP, Server Name como localhost, Path atribumos ${ctx}controller e Port Number 8080. Todas as requisies HTTP (elemento Sampler -> HTTP Request) tero como padro esses valores podendo sobrepo-ls se necessrio. Um aspecto interessante nesta configurao o uso da User Defined Variable ${ctx} apresentada no elemento Test Plan. Caso mude o contexto do aplicativo, bastante simples mud-lo para todas as requisies, uso altamente recomendado.

25

Fundamentos

Stress-test

Temos diversos tipos de Config Element, conforme apresentamos na tabela a seguir: Config Element Login Config Element Descrio Padro de login para atividades que utilizo de sistemas de login. Simples Config Element Permite que desenvolvedores adicionem novos componentes e funcionalidades para o JMeter. FTP Request Defaults HTTP Request Defaults HTTP Manager HTTP Cookie Manager Authorization Padro de acesso a servidores FTP. Padro de acesso a servidores HTTP. Para acesso a pginas protegidas que requerem logon via HTTP. Permite que voc configure Cookies para enviar nas

requisies HTTP. HTTP Header Manager Java Request Defaults JDBC Defaults JDBC Database Padres do pool utilizado para testes com JDBC. Database Login Permite a customizao do Header HTTP utilizado para teste. Padres para testes em classes Java. Padres para login via JDBC

Connection Pool Defaults JDBC SQL Query Defaults LDAP Request Defaults Padres de consultas SQL. Padres para testes em servidores LDAP.

Os elementos de configurao so sensveis ordem e hierarquia em que voc os adiciona em seu Test Plan. Fique atento neste detalhe. Caso trabalhe com processo de autenticao HTTP voc vai precisar de Config Elements do tipo Authorization Manager.

26

Fundamentos Thread Group

Stress-test

Um elemento Thread Group representa uma determinada demanda ou um conjunto de usurios executando uma mesma atividade. Por esse motivo um dos elementos mais importantes no seu plano e deve ser utilizado e configurado com bastante cautela para que voc crie um plano de testes que de fato simule a realidade.

Configuramos em um Thread Group: Number of Thread: a quantidade de usurios simultneos; Ramp-up Period (in seconds): intervalo entreo os lanamentos de requisies. O valor digitado ser dividido pelo nmero de requisies, e o resultado ser o intervalo real entre cada requisio. No exemplo acima, temos 10 threads e Ramp-up 10, 10 dividido por 10 resulta em 1, portanto teremos um disparo de atividade nesta thread a cada segundo.

27

Fundamentos

Stress-test

Loop Count: quantidade de vezes que queremos executar as threads de teste. Este nmero multiplicado pela quantidade de threads resulta no total de requisies que sero enviadas. Forever: se ligado, ignora o valor configurado em Loop Count e executa as tarefas at que voc cancele a execuo do plano de testes. Scheduler: permite que voc agende o disparo da Thread Group em um determinado horrio. Aps configurar a Thread Group com os valores convenientes para seu plano de testes, voc poder adicionar uma ou mais atividades de requisies para servidores, no JMeter representadas por elementos do tipo Sampler. Estudaremos Samplers a seguir, portanto, note que no exemplo da imagem acima, temos uma Thread Group chamada Load com dois Samplers HTTP: Load Memberships e Load Turmas. Esta Thread Group estar simulando um usurio clicando na opo Visualizar Memberships e outro clicando em Visualizar Turmas no mesmo instante. Como esta thread group foi configurada para 10 amostras de 10 threads com intervalo de um seegundo entre as threads, teremos de segundo em segundo uma solicitao para Visualizar Memberships e outra para Visualizar Turmas. Voc pode adicionar uma ou mais Thread Group em um plano de testes. Vale lembrar que por padro as Thread Group so disparadas em paralelo, ou seja, simultaneamente. Caso queira alterar este comportamento, habilite o parmetro Run Each Thread Group Separately no Test Plan.

28

Fundamentos Sampler

Stress-test

Samplers so elementos que faro a requisio fsica para um determidado servidor. Temos 7 diferentes Samplers inclusos na verso utilizada do JMeter. Samplers sempre so adicionados as Thread Groups. Podemos tambm desenvolver nossos prprios Samplers. Essencialmente o que temos que fazer implementar uma inteface em uma classe, empacot-la em um jar, e informar o JMeter da existncia deste jar. Os seguintes Samplers esto disponveis por padro: Nome FTP Request HTTP Request Descrio Para efetuar downloads via FTP como parte do plano de testes. Utilizado para simular requisies HTTP, fazendo com o que o JMeter atue como um browser. O Sampler mais utilizado. SOAP/XML-RPC Request WebService (SOAP) Para requisies simples via SOAP. Configuramos uma URL e um XML para enviar para o servidor. Permite o envio de requisies WebService mais elaboradas. Capacidade de leitura de arquivos WSDL. Para execuo de testes em classes customizadas. um ponto de extenso do framework JMeter. JDBC Request Para testes de carga em banco de dados via JDBC. Podemos utilizar tambm para tarefas simples como criar tabelas, excluir todos os dados antes de iniciar o teste, entre outros. LDAP Request Para testes em servidores LDAP.

Request (Alpha Code) Java Request

Vamos exemplificar o uso de Sampler atravs do HTTP Sampler pelo fato de ser o mais utilizado atualmente.

29

Fundamentos Exemplo de HTTP Sampler

Stress-test

Informaes fornecidas no Config Element HTTP Request Defaults. O preenchimento destes dados causaria o efeito de sobreposio das informaes padres.

Opes para simular um upload de arquivo.

Parmetros a serem enviados para o Controller.

30

Fundamentos Exemplo de JDBC Sampler

Stress-test

O Sampler JDBC Request bastante simples de ser utilizado, basta configurar a URL JDBC, classe do driver e informaes de login (que podem ser configuradas externamente em um Config Element Login). Para que seu driver JDBC seja carregado, voc vai precisar que ele esteja no diretrio lib/ext do seu JMeter. Um outro Sampler til nos dias de hoje o LDAP Request, nele podemos simular pesquisar, adies, delees e modificaes no servidor de diretrios em questo. Um tipo de Sampler que voc poder questionar, seria algum para chamar EJBs que no temos por padro. Talvez a concepo do projeto tenha o foco em testes na camada do client, neste ponto de vista, devemos testar o client do EJB e no ele prprio. De um outro lado, visualizando o JMeter como um framework de testes de stress e tambm de caixa preta, tal funcionalidade seria bastante til.

31

Fundamentos Listeners

Stress-test

So elementos que capturam os resultados gerados pelo plano de testes e apresenta-os em um determinado formato. Listeners podem ser diretamente vinculados a um Test Plan, neste caso teremos um mesmo listener para todos os Samplers.

Um listener adicionado ao Test Plan, captura e apresentada resultados de execuo de todos Samplers.

32

Fundamentos

Stress-test

No prximo exemplo, temos um listener vinculado a um Sampler especfico, neste caso ele vai apresentar somente os resultados daquele Sampler:

Perceba a diferena no quadro ao lado. Agora s temos totalizaes da execuo do Sampler Membership.

33

Fundamentos Os seguintes Listeners j esto includos JMeter: Listener Assertion Results Descrio

Stress-test

Quando utilizamos assertions (verificaes nas respostas dos samplers), este listener apresenta se determinada amostra est de acordo com a Assertion ou no.

Graph Full Results

No funciona corretamente na verso 1.9 do JMeter, teoricamente deveria apresentar um grfico de linha completo, com todas as respostas dos Samplers.

Graph Results

Apresenta um grfico simples e til. Com mdia, mediano, desvio padro, mnimo e mximo do tempo de resposta das requisies.

Mailer Visualizer Simple Data Writer

No disponvel. Listener que tem a capacidade de armazenar os dados de resposta em um arquivo XML.

Spline Visualizer

Grfico que apresenta uma linha continua com todos os resultados de tempo de resposta em milisegundos dos testes efetuados. Composto por 10 pontos, cada ponto contm a mdia 10% das amostras. Bastante til para analisar impacto de performance e estabilidade.

Aggregate Report View Results in Table

Mostra totalizaes diversas do resultado. Resultado individual de cada amostra, indicando seu tempo de resposta e seu obteve sucesso ou no.

View Results Tree

Apresenta cada requisio e resposta retornada pelo servidor. Excelente ferramenta para testes de caixa preta.

Todos os Listeners podem gravar seus resultados em um arquivo XML.

34

Fundamentos Logic Controller

Stress-test

So elementos que permitem um controle mais customizado na execuo das requisies dentro de uma Thread Group. Temos controladores lgicos que permitem a criao de laos, execuo singular, modularizao, randomizao, entre outros. Vejamos uma tabela completa: Controlador Lgico Interleave Controller Descrio Vai executar as requisies contidas no elemento de controle de forma intervalada. Simple Controller Representa um grupo de Samplers. Utilizado com fins

organizacionais, somente para agrupar um conjunto de samplers. Loop Controller Permite que determinado conjunto de Samplers tenham um lao especfico. Module Controller Permite executar uma tarefa j est sendo executada em outra Thread Group. um maneira excelente para voc componentizar, modularizar e ter facilidades de manuteno do seu plano de testes. Once Only Controller Random Controller Throughput Controller Dentro de um loop, executa determinada atividade somente uma vez. Executar um conjunto de atividades aleatoriamente. Para controle avanado de vazo. Permite que voc opere um determinado conjunto de tarefas com uma parcela da vazo somente. Pode limitar a vazo por quantidade ou porcental, por usurio ou vazo global. Bem avanado e complicado quando combinado com outros controladores lgicos. Recording Controller Quando utilizamos um servidor proxy HTTP, o Recording torna possvel a gravao de dados retornados como resposta pelo Proxy. Opo bastante especfica para o uso de proxy.

35

Fundamentos Exemplo de Controladores Lgicos

Stress-test

O exemplo a seguir utiliza uma combinao de recursos para gerar um plano de testes. O plano executar as seguintes tarefas:

O primeiro detalhe que configuramos Run each Thread Group Separately pois queremos que o plano seja executado em srie e no paralelamente. Vejamos a seqncia disparada no plano de testes: 1. Test Plan - Prepare: A primeira Thread Group que temos a Prepare que vai executar JDBC Requests para excluir todos os dados da tabela Memberships e Cursos. 2. Test Plan - Prepare - PreparaDB: um controlador do tipo Once Only Controller que vai garantir que independente de Loop Counts na Thread, esta atividade s ser executada uma vez por usurio. 3. Test Plan - Prepare PreparaDB - Delete Cursos: JDBC Request que remove todos os dados da tabela de cursos.

36

Fundamentos

Stress-test

4. Test Plan - Prepare PreparaDB - Delete Members: JDBC Request que remove todos os dados da tabela de memberships. 5. Test Plan Inclusoes: thread group responsvel pelas requisies de incluso de dados. 6. Test Plan Inclusoes Interleave Controller: controlador que vai alternar entre as requisies de incluir um membership e incluir um curso. 7. Test Plan Inclusoes Interleave Controller Membership: request HTTP que vai acionar o controller da aplicao para incluso de um Membership. 8. Test Plan Inclusoes Interleave Controller Membership contadorMember: varivel tipo Counter para gerar dados dinmicos dos memberships, como nome_1, nome_2 etc. Estudaremos adiante. 9. Test Plan Inclusoes Interleave Controller Curso: request HTTP que vai acionar o controller da aplicao para incluso de um Curso. 10. Test Plan Inclusoes Interleave Controller Curso contadorCurso: varivel tipo Counter para gerar dados dinmicos dos cursos, como nome_1, nome_2 etc. 11. Test Plan Aggregate Report: Listener para apresentao dos resultados do teste em forma de relatrio de totalizaes, mdias, mnimo e mximo. 12. Test Plan Graph Results: Apresenta resultado das requisies em modo grfico. Inclui desvio padro. 13. Test Plan View Results in Table:dado de cada requisio em uma tabela. Inclui tempo individual de cada resposta e se obteve sucesso ou no.

37

Fundamentos Elementos Avanados

Stress-test

Nesta parte vamos estudor alguns elementos que tornam o JMeter uma ferramenta robusta e para diversos fins. Assertions Assertion siginifica afirmao, e justamente podemos colocar afirmaes em nosso plano de testes para verificar se determinada resposta est de acordo com alguma afirmao colocada no Sampler, vejamos alguns exemplos de afirmaes: Como parte da resposta temos que encontrar um texto contendo <!--RESULTADO OK -->; A requisio tem que retornar em menos de 2 segundos; A resposta tem que ser maior ou igual que 512 bytes; Como resposta temos que receber um documento XML como este (...);

Para permitir tais operaes o JMeter conta com os seguintes componentes tipo Assertion: Tipo de Assertion Response Descrio Permite que voc verifique se voc recebeu um contedo X como parte da resposta. Voc pode colocar expresses lgica: deve conter, no deve conter ou deve ser exatamente tal contedo. Duration Para afirmar que determinado Sampler tem que response em at X milisegundos. Size Determinada resposta deve ser menor, maior, igual, diferente que tantos bytes. XML ltil para testes de WebServices, voc pode verificar se determinada resposta equivalente a um documento XML especificado no plano de teste.

38

Fundamentos

Stress-test

Vejamos alguns exemplos de telas de configurao de Assertions:

39

Fundamentos

Stress-test

Resultado de verificaes de assertion aps os testes:

40

Fundamentos Pre Processors

Stress-test

Pr-processadores so elementos que de alguma forma processam um dado antes de acionar um Sampler. Tipicamente utilizamos pr-processadores para gerar dados dinmicos para o envio de solicitaes para rotinas de manuteno de entidades. Um exemplo clssico o pr-processador tipo Counter. Com ele criamos um contador configurvel que pode ser utilizado atravs de um nome de varivel atribudo em tempo de configurao. O JMeter disponibiliza os seguinte pr-processadores: Pr-processador Counter Descrio Utilizado para estabelecer um contador. Configuramos seu valor mnimo, mximo, nome da varivel e se desejamos um contador independente para cada usurio ou se todos compartilham de um mesmo contador. User Parameters Voc pode configurar uma varivel que tem um valor diferente para cada usurio (thread). Recurso bastante til. HTML Link Parser Para capturer links retornados por uma pgina e contedo de formulrios. Pode fazer spidering no seu Website. Funcionalidade no estabilizada. HTTP Modifier URL Re-writing Prove o mecanismo de reescrita de URL para servidores que gerenciam sesses HTTP atravs desta tcnica.

41

Fundamentos Exemplo de uso de pr-processadores:

Stress-test

42

Fundamentos Exemplo de uso de parmetros or usurio:

Stress-test

43

Fundamentos Post Processors

Stress-test

Ps-processadores permitem que voc faa a extrao de dados da resposta de uma requisio. Um nico tipo de elemento de ps-processamento est disponvel na verso atual do JMeter: Regular Expression Extractor. Este extrator permite que voc configure um Regular Expression com sintaxe similar a do Perl para obter parte de um resultado.

44

Fundamentos Timers

Stress-test

Permitem um controle mais preciso no que se refere ao tempo de execuo do teste. Podemos, por exemplo, estabelecer um intervalo de tempo padro entre todas as threads do plano de testes, delays aleatrios entre threads e tambm controle de freqncia de vazo. Vejamos a seguir os elementos Timer disponveis: Timer Constant Timer Descrio Permite que voc estabelea um intervalo em milisegundos padro entre as threads. Gaussian Uniform Timer Constant Throughput Timer Mantm a freqncia de acesso de um determinado Sampler. Voc pode especificar que determinada atividade voc quer executar 100 vezes por segundo, por exemplo. Excelente controlador para quando voc quer conhecer o comportamento do data-center frente uma demanda. Random Random Permite configurao de intervalos aleatrios entre threads

45

Fundamentos Exemplo de Timer:

Stress-test

Neste caso temos o Timer de Throughtput associado a todo Plano de Testes. Como resultado, o Jmeter vai disparar o nmero de requisies necesrias para trabalhar com 2000 amostras por segundo. Podemos monitorar a performance do servidor para saber quanto isso consumir de recursos do nosso data-center.

46

Fundamentos Monitorao de Ambiente de Testes

Stress-test

muito importanto observarmos sempre o ambiente que estamos executando o teste de stress. Cada camada da arquitetura da soluo dever ser monitorada, observando um conjunto de fatores que podem gerar gargalos na arquitetura.

Elementos a serem monitorados

Hub MySQL Router

EJB Tier Web Tier

Temos os seguintes elementos que devemos monitorar: Elementos Roteador Link Wan Itens de Monitorao CPU do roteador Link Wan: entrada de pacotes, sada, colises Memria (dado pouco crtico) Servidores Fsicos: Web Tier, EJB Tier e MySQL CPU do servidor Memria Hard disk Rede I/O Memria virtual Servidores Lgicos: J2EE Web Server, J2EE EJB Server e MySQL No temos uma forma padro de coletarmos tais dados, cada fabricante oferece uma forma para monitorao lgica do sistema. Com a adoo de JMX (Java Management Extension) isso tende a melhor com containeres J2EE. Um dia poderemos conhecer quanta memria e CPU um EJB est utilizando.

47

Fundamentos Protocolo SNMP

Stress-test

Criado em 1988, o protocolo Simple Network Management Protocol se tornou um padro da indstria para monitorao de elementos de rede e foi amplamente aceito por diversas tecnologias. Padronizado pelo Internet Engineering Task Force o SNMP se encontra na sua terceira verso. Voc pode encontrar todos os detalhes da especificao atravs do site www.ietf.org. Suas especificaes so padronizadas atravs de documentos chamados de RFC, a arquitetura geral do SNMP voc encontra no RFC de nmero 3416. Este protocolo baseado na arquitetura agente / gerente e relativamente simples a sua implementao, encorajando os fabricantes a criarem seus agentes. Essencialmente temos um agente para cada tipo de dispositivo e um gerente monitorando ambientes heterogneos. Contamos agentes SNMP para diversos dispositivos fsicos e lgicos: Roteadores CISCO e 3Com; Hubs intelegentes 3Com; Servidor Unix; Servidor Windows; Mainframes; Oracle; Satlites e bridges; Algumas implementaes de J2EE, como iPlanet;

48

Fundamentos Arquitetura Monitorada

Stress-test

Se contarmos com agentes para todos os dispositivos da nossa rede poderemos monitorar nossa arquitetura da seguinte forma:

Hub MySQL Router

EJB Tier Web Tier

Gerente SNMP

49

Fundamentos Agente SNMP

Stress-test

Os agentes SNMP podem estar presentes por padro, como no caso da maioria dos roteadores do mercado, ou ento podem estar disponveis para instalao opcional, como o caso do agente SNMP para Windows NT, 2000 e XP. Quase todos os sistemas operacionais, roteadores e switches inteligentes possuem agente SNMP. No caso de servidores J2EE ou banco de dados, voc vai precisar consultar documentaes para saber se os agentes esto disponveis. Pode-se tambm desenvolver um agente SNMP atravs de um kit de desenvolvimento. O protocolo SNMP altamente extensvel e existem adoes exticas deste protocolo, como a monitorao do processo de envelhecimento do wiskey Jack Daniels. Gerente SNMP Um gerente SNMP geralmente um software desenvolvido por uma empresa ou grupo de trabalho open-source. Contamos com diversas implementaes que oferecem diferentes recursos e inteligncias. Management Information Base Para cada agente temos um dicionrio de informaes que podemos coletar sobre aquele agente. Para nos comunicarmos com um roteador Cisco modelo 1122, precisaremos da MIB da Cisco, se queremos monitorar o Windows XP, precisaremos da MIB da Microsoft. Carregamos as MIBs no software que atua como o gerente SNMP, e este em geral vai estar munido de um MIB Browser que permite que voc navegue nas informaes do agente e dispare solicitaes de informaes manualmente. Existem softwares simples que atuam somente como MIB Browser para que voc possa descobrir as informaes coletveis de um determinado elemento de rede. As informaes de uma MIB so organizadas e catalogadas atravs de uma seqncia de inteiros que identifica o pais, a empresa, o equipamento, o modelo etc. Vejamos a seguir um grfico de exemplo.

50

Fundamentos

Stress-test

Perceba que para cada n da arvore, temos um nmero. Por exemplo, um roteador Cisco identificado com o nmero 1.3.6.1.4.1.9.1.1. Chamamos este nmero de Object ID, esta seqncia indica somente o equipamento, cada novo inteiro colocado a sua direita, identifica uma informao sobre ele.

51

Fundamentos Operaes SNMP

Stress-test

Foram especificadas as seguintes operaes para o protocolo SNMP: get: obtm um informao de um equipamento, voc deve informar um OID; get next: quando se trata de um dado que contm mltiplas instancias, como por exemplo CPU, precisamos obter um resultado de uma pergunta paa cada CPU do servidor, neste caso utilizamos get next. set: modifica alguma informao de um elemento. Existe um famoso ataque a roteadores Cisco onde o hacker faz um SNMP Set para derrubar uma interface do roteador. trap: evento assncrono, do agente para seu gerente. Podemos configurar um roteador Cisco para ele enviar traps para o gerente, o roteador vai utilizar de traps para informar anormalidades que eventualmente possam acontecer, como uma queda de interface. Segurana e caractersticas tcnicas do SNMP A primeira verso do SNMP no pode ser considerada seguro, simplesmente possui uma senha plain text que voc configura para fazer set e outra para fazer get. Melhorias foram implementadas na segunda verso e finalmente a verso trs pode ser considerada segura. O SNMP implementado com UDP tornando-o leve e rpido na rede. Tipicamente configuramos em um agente SNMP: Senha para poder executar get e get next; Senha para executar set; Quem o seu gerente;

52

Fundamentos Ferramentas Comerciais de Monitorao

Stress-test

Contamos no mercado com diversas opes comerciais de framework de monitorao (a maioria baseado em SNMP) com capacidades avanadas, podemos destacar as seguintes funcionalidades: Monitorao ativa de ambiente; Configurao de alarmes e aes: se uma partio passar de 80% de uso, tente limpar seu tmp, se passar de 90% envie e-mails para administradores Unix e assim por diante; Armazenamento de base histrica para anlise de plano de capacidade; Identificao de gargalos; Planejamento de upgrade de hardware; Clculo para simulao de vazo; Corelacionamento de eventos;

Podemos destacar as seguintes ferramentas no mercado: Fabricante BMC IBM HP Novell Sun Ferramenta Patrol Tivoli Openview ManageWise Solstice

53

Fundamentos Ferramentas no-comerciais de Monitorao

Stress-test

Para monitorao de ambientes mais simples podemos contar com ferramentas e comandos de sistema operacional para colher as principais informaes sobre o ambiente. A monitorao com ferramentas gratuitas pode variar bastante de um equipamento para outro. De uma forma maneira simples conseguimos com facilidade monitorar os seguintes itens: Servidor Linux: atravs de comandos de linha ou at mesmo SNMP; Servidor Windows: utilizando seu software chamado de Performance Monitor ou ento SNMP; Mainframes: comum utilizarem tcnicas de gerao de arquivos texto com informaes sobre o mainframe e disponibiliza-lo via FTP. Para monitorao de Unix e Linux voc pode utilizar os seguintes comandos; Comando sar Funcionalidade Geralmente no instalado por padro, monitora exclusivamente CPU vmstat Monitorao de memria, processos, I/O, swap e CPU. Pode-se utilizar vmstat <nmero> para que receba atualizaes de segundo a segundo. netstat Comando para monitorao de rede. Podemos utilizar c para fazer o comando continuamente.

54

Fundamentos Veja o resultado da execuo do comando vmstat 1:


procs b w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 memory cache 40348 40348 40348 40348 40348 40348 40348 swap so 0 0 0 0 0 0 0

Stress-test

r 0 0 0 0 0 0 0

swpd 0 0 0 0 0 0 0

free 43044 43044 43044 43044 43044 43044 43044

buff 321708 321708 321708 321708 321708 321708 321708

si 0 0 0 0 0 0 0

bi 0 0 0 0 0 0 0

io bo 2 0 0 0 1 0 0

in 0 109 110 114 117 108 108

system cs 10 121 119 126 119 117 117

us 2 2 1 0 0 0 0

sy 2 3 4 5 6 5 5

cpu id 8 95 95 95 94 95 95

Coluna procs ri procs b procs w memory swpd memory free memory buff swap si swap so io bi io bo system in system cs cpu us cpu sy cpu id

Informao Processos aguardando para serem executados Processos em sleep no-interrrompvel Processos em swap porm em estado de runnable Quantidade de memria virtual utilizada (kb) Quantidade de memria disponvel (kb) Quantidafe de memria em buffer (kb) Memria em swap do disco Memria em swap para disco Blocos enviados para um dispositivo de I/O Blocos recebidos de um dispositivo de I/O Nmero de interrupes por segundo Nmero de troca de contexto por segundo Porcentagem de uso da CPU para usurios Porcentagem de uso da CPU para o sistema Porcentagem da CPU disponvel

O comando vmstat bem completo apesar de ter um foco principal na memria virtual. Seu nico problema que no temos a data e hora da coleta da informao. Podemos ligar o comando e direcionar o resultado para um arquivo:
nohup vmstat 1 &

Este comando vai gerar um arquivo chamado de nohup.out com os resultados.

55

Fundamentos

Stress-test

Poderamos programar um script utilizando bash para imprimirmos tambm a hora da coleta: Script bash para coleta de informaes
#!/bin/bash echo Monitorao personalizada while [ true ] do echo =================================== date vmstat sleep 1 done

Coloque o contedo acima em um arquivo chamado monitora.sh, para execut-lo digite:


nohup monitora.sh &

Dicas: bastante simples transformar este script em um servio do Linux. Mude o atributo de execuo do script: chmod 755 monitora.sh

56

Fundamentos

Stress-test

Plano de Capacidade e Relatrio de Concluses J aprendemos nos captulos anteriores a: Capturar requistos; Projetar um plano de stress-test documentado; Utilizar a ferramenta Apache Jmeter para simular demandas; Monitorar servidores e equipamentos diversos de um data-center;

Com o resultado gerado pelo planejamento, JMeter e pela monitorao, temos uma base concreta para estudarmos a capacidade da arquitetura que adotamos na soluo. Devemos reunir no nosso Relatrio de Concluses e Plano de Capacidade as seguintes informaes: Documentao sobre previso de uso da soluo. Aprendemos no captulo II a capturar as informaes atravs de Metodologia para Testes de Capacidade. Documentao do ambiente fsico utilizado: servidores, rede, memria, hard disk etc. Documentao do ambiente lgico: sistema operacional, mquina virtual, servidor de aplicao, entre outros. Detalhes do plano de stress elaborado com a ferramenta em questo. Informaes coletadas na monitorao dos servidores e dispositivos que participaram do teste. Relatrio de Concluses. Plano de Capacidade e Recomendaes Tcnicas.

Vejamos a seguir um exemplo completo de um relatrio de stress-test que recomendamos como modelo caso voc / sua empresa ainda no tenha nenhum pr-definido.

57

Relatrio de Analise de Capacidade Parte 1/7


Analise de Requisitos no-funcionais AA4 Planning & Performing Stress-test

Analise de Requisitos no-funcionais Nome do Projeto: Estudo de Caso Academia do Arquiteto Data coleta dos dados: 1/1/2000

Perguntas Qual a demanda prevista para usar a soluo? R. 200 acessos por dia em mdia. Existe possibilidade de picos? Se sim, qual o pico previsto? R. Sim. Podemos chegar a um pico de 100 usurios simultneos. Qual o tempo de resposta desejado? R. O nvel ideal de trabalho que o usurio no espere mais do que 2 segundos por cada resposta. Os acessos durante o dia vo se concentrar mais em um horrio especfico? R. Sim, 80% devem ocorrer entre as 11:00 e 21:00. Existe um nivelamento no acesso durante a semana ou existe um perodo de maior concentrao? R. Segundas e teras, acesso baixo, 100 acessos por dia. Quartas, quintas, mdio acesso com 150 acessos por dia. Sextas e sbados, pico de 300 acessos por dia. Domingo, 200 por dia. Quanto seu negcio tende a crescer no prximo ano e no ano seguinte dentro do cenrio otimista do seu business plan? R. Pretendemos crescer 15% neste ano e 30% no prximo. O negcio que a soluo atende pode apresentar variaes extremas e situaes atpicas com que grau de freqncia? R. 5%.

58

Relatrio de Analise de Capacidade Parte 1/7


Analise de Requisitos no-funcionais AA4 Planning & Performing Stress-test

Distribuio de utilizao da soluo por use-case Use-case Secretaria mantm cursos (adiciona, exclui, inclui e pesquisa) Secretaria mantm turmas (criao de turmas, excluso, matrcula de alunos e modificao de matrculas) Secretaria mantm memberships Alunos se cadastram no sistema via Web Alunos efetuam matrculas via Web Clculo de Volume de Dados por Entidade Entidade Curso Membership Turma Matricula Atual 25 4000 40 600 Ano 1 35 6000 100 1800 Ano 2 50 8000 300 4000 50% 5% 5% 35% % de acesso 5%

59

Relatrio de Analise de Capacidade Parte 2/7


Documentao do Ambiente Fsico AA4 Planning & Performing Stress-test

Documentao do Ambiente Fsico Utilizamos trs computadores para executar os testes: Node #1: Uma estao PC Windows XP com alta capacidade de processamento para atuar como simulador de clientes com a ferramente Apache JMeter; Node #2: Um PC Linux Red Hat 9.1 com o middleware J2EE JBoss 3.2.2; Node #3: Um PC Linux Red Hat 9.1 com o servidor de banco de dados MySQL 4.0.1;

Na tabela a seguir detlhamos as configuraes de hardware de cada elemento utilizado no teste. Elemento Node #1 Detalhes Intel Pentium 4 2.80 GHz cach 256KB 60GB (5400 rpm) 512 MB DDR SDRAM Node #2 AMD Athlon XP2200+ 1800MHz cach 256KB 40GB (5400 rpm) 512 MB DDR SDRAM Node #3 AMD Athlon XP2200+ 1800MHz cach 256KB 40GB (5400 rpm) 512 MB DDR SDRAM Velocidade da rede: 100 megabits; HUB Genrico;

60

Relatrio de Analise de Capacidade Parte 3/7


Documentao do Ambiente Lgico AA4 Planning & Performing Stress-test

Documentao do Ambiente Lgico Neste tpico documentamos a verso de cada um dos softwares e componentes lgicos em geral que participaram do teste. Elemento Node #1 Node #1 Node #1 Software Apacha JMeter Java Development Kit Sistema Operacional Nome e Verso 1.9.1 Java 2 Standard Edition 1.4.2-b28 Windows XP 5.1 build 2600.xpxp2 Service Pack 1 Node #2 Node #2 Node #2 Node #2 Node #2 Node #3 Node #3 Application Server j2EE Driver JDBC MySQL Java Development Kit Pooling de conexes Sistema Operacional MySQL Server Sistema Operacional JBoss 3.2.2 (Wonderland) Fonte www.mysql.com verso 3.0.10 Java 2 Standard Edition 1.4.2-b28 25 conexes configuradas no JBoss Red Hat Linux 9.1 2.4.20-8 4.0.13 Red Hat Linux 9.1 2.4.20-8

61

Relatrio de Analise de Capacidade Parte 4/7


Detalhes do Plano de Stress-test AA4 Planning & Performing Stress-test

Detalhes do Plano de Stress-test Elaboramos com a ferramenta JMeter um script que simula o uso da aplicao conforme dados coletados na tabela de previso distribuio de uso de requisitos. Envolvemos neste teste todas as funcinalidades que representam 80% dos requisitos do aplicativo. Nosso script JMeter pode ser dividido em duas partes: 1. Gerao de massa de dados; 2. Simulao de usurios; A primeira parte responsvel por gerar uma massa inicial para podermos testar operaes de edio de dados desde o comeo do teste.

62

Relatrio de Analise de Capacidade Parte 4/7


Detalhes do Plano de Stress-test AA4 Planning & Performing Stress-test

As operaes envolvidas no controller DumpDB limpam a tabela e seus numeradores de autoincremento, em Memberships criamos um cadastro inicial de alunos. Em seguida temos as operaes em cascata no controller Cursos. Para cada curso adicionado, n turmas so adicionadas para o curso e n matrculas so adicionadas na turma. uma operao de gerao de massa em cascata que exige bastante cuidado no planejamento, pois tais dados sero utilizados pelas aes de alterao e excluso disparadas pelo JMeter.

63

Relatrio de Analise de Capacidade Parte 4/7


Detalhes do Plano de Stress-test AA4 Planning & Performing Stress-test

Na segunda parte temos um Thread Grooup principal nomeada de Internet Users. Foram utilizados controladores de vazo para agrupar um conjunto de tarefas. Elemento Members Funo Throughput Controller: as tarefas agrupadas neste controlador devero representar 50% das requisies enviadas ao servidor. Member Use-cases Member Incluir, Excluir, Editar e Listar TurmasMatriculas Throughput Controller: as tarefas agrupadas neste controlador devero representar 45% das requisies enviadas ao servidor. Turmas Turmas Incluir, Editar, Listar, Matriculas Incluir, Excluir e Editar Cursos Throughput Controller: as tarefas agrupadas neste controlador devero representar 5% das requisies enviadas ao servidor. Cursos -> Cursos Cursos Incluir etc. Random Controller. Simulam as operaes da entidade curso. Random Controller. Simulam as operaes disponveis para as entidades turmas e matrculas. Random Controller. Simulam as operaes disponveis para a entidade membership.

64

Relatrio de Analise de Capacidade Parte 5/7


Informaes Coletadas na Monitorao AA4 Planning & Performing Stress-test

Informaes Coletadas na Monitorao do Ambiente Apresentamos um resumo do estado geral dos servidores e elementos de rede envolvidos nos testes. Os arquivos reais de monitorao esto disponveis no CD entregue como parte do relatrio. O perodo de observao foi de 3 minutos com carga total de 80 usurio com intervalo de 5 em 5 segundos entre as operaes de cada usurio. Servidor Node #3 Resumo O servidor apresentou-se totalmente estvel e com capacidade de escalar se necessrio. O consumo de CPU no passou de 15% durante todo o perodo de monitorao e no foi observado crescimento no uso da memria. Node #2 O servidor apresentou-se totalmente estvel e com capacidade de escalar se necessrio. O consumo de CPU ficou em 30% na mdia e notamos somente alguns picos. Houve remanejamento de 4 megabytes de memria para cach e tivemos uma reduo de 3 megas de memria no servidor. Node #1 Veja na imagem algumas estatsticas geradas pelo JMeter

65

Relatrio de Analise de Capacidade Parte 6/7


Relatrio de Concluses AA4 Planning & Performing Stress-test

Relatrio de Concluses Com as cargas programadas no JMeter conseguimos atingir mais de 900 requisies por minuto, o que significam 16 requisies por segundo. A mdia do tempo de resposta est dentro do esperado, ou seja, no mximo 2 segundos. Tempo total de teste: 3 minutos; Vazo aferida: 921 requisies por minuto; Nmero de transaes efetuads em 3 minutos: 2702;

Considerando que o intervalo do usurio entre as solicitaes efetuadas seja de 5 segundos, temos os seguintes resultados: Mdia do nmero de requisies por minuto de um usurio: 12 requisies por minuto. Capacidade / Vazo do sistema: 970 requisies por minuto. Total de usurios simultneos: 970 / 12 = 80,83

66

Relatrio de Analise de Capacidade Parte 6/7


Relatrio de Concluses AA4 Planning & Performing Stress-test

Conforme observamos no grfico acima, o sistema apresentou uma constncia na vazo, notamos uma pequena queda do meio do teste para frente. A queda foi de 1050 requisies por minuto para 921. Isso se deve ao fato de que no temos paginao dos dados quando visualizamos memberships, cursos e turmas. Portanto a medida que o sistema adiciona novos dados, a pgina de visualizao cresce.

67

Relatrio de Analise de Capacidade Parte 7/7


Plano de Capacidade e Recomendaes AA4 Planning & Performing Stress-test

Plano de Capacidade e Recomendaes A arquitetura apresentada revelou que atende aos requisitos no-funcionais consedenrado o mximo de 100 usurios concorrentes em picos expordicos. Em geral a aplicao est suportando 80 usurios concorrentes e o tempo de resposta est com mdia de 800 mlilesegundos, 1500 milisegundos no mximo e estabilidade no desvio padro. Para os prximos dois anos o servidor de aplicativos, banco de dados e arquitetura J2EE adotada estar atendendo aos requisitos do negcio da empresa. Para aumentar a escalabilidade sugerimos a considerao do uso de cluster de Web Containers tendo em vista que o servidor de banco de dados est bastante ocioso e pode comporta mais um Web Server solicitando dados. Notamos uma queda de performance no decorrer do uso do aplicativo que pode ocasionar em um aumento de latncia significativo. A principal causa do problema a falta de paginao de dados quando o usurio solicita a visualizao de memberships, cursos e turmas. Pela falta de uso de paginao, esta pgina tende a crescer a medida que se inclui novos dados. Recomenda-se fortemenete o refactoring da aplicao e uso de Value List Handler para solucionar o problema.

68