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

Stress-test

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

Stress-test

3. Monitorao
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

Stress-test

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

Stress-test

JMeter
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

Stress-test

Metodologia para Teste de Capacidade


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?

Web?

Strtus?

HTTPS?

BMP?

Browser?

Hibernate?

LDAP?

CMP?

Applet

Commons?

Declarativa?

MDB?

Swing?

Cocoon?

Programada?

Arquitetura Fsica & Tcnica

Requisitos no-funcionais

Use-cases

Acessos por dia

O que fazer

Disponibilidade

Detalhes de interao

Picos

O que entra

Distribuio

O que sa

Plano de crescimento

Se der errado

Teste de
Teste de Stress e

Funcionalidades

Capacidade

Caixa preta

Fundamentos

Stress-test

Formulrio de Anlise de Requisitos no-funcionais


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

Stress-test

Distribuio de utilizao da soluo por use-case


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

% de acesso

Secretaria mantm cursos

5%

(adiciona, exclui, inclui e pesquisa)


Secretaria mantm turmas

35%

(criao de turmas, excluso, matrcula de alunos e modificao


de matrculas)
Secretaria mantm memberships

50%

Alunos se cadastram no sistema via Web

5%

Alunos efetuam matrculas via Web

5%

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

Atual

Ano 1

Ano 2

Curso

25

35

50

Membership

4000

6000

8000

Turma

40

100

300

Matricula

600

1800

4000

11

Fundamentos

Stress-test

Identificao de Cenrios Atipicos


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

Stress-test

Tabela de Mapa de Riscos


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

Documentao

poca de Matrcula

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

Stress-test

Planejamento de Testes de Capacidade


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

Stress-test

Exemplo de Proposta de Planejamento de Testes


Cenrio de Uso Comum
Incidncia

Incidncia

Global

local

Ao

Actor

Etapas

Secretaria

Request de form

Use-case: Secretaria mantm cursos


35%

35%

Cadastrar novo
membership

35%

Submit de form

Alterar dados de

Secretaria

membership

Load dos memberships


Edit membership
Submit de form

5%

Excluso de

Secretaria

memberships

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

dados

da

Secretaria

matrcula

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

Incidncia

Global

local

Ao

Actor

Etapas

Secretaria

Request de form

Use-case: Secretaria mantm cursos


35%

60%

Cadastrar novo
membership

25%

Submit de form

Alterar dados de

Secretaria

membership

Load dos memberships


Edit membership
Submit de form

5%

Excluso de

Secretaria

memberships

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

dados

da

Secretaria

matrcula

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

Stress-test

Ferramenta JMeter
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:

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

Stress-test

Inicializando o JMeter
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

Stress-test

Criando um Plano de Testes


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

Stress-test

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

Descrio

Test Plan

Representa seu plano e todos seus elementos.

Workbench

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

Para configurao padro de dados. Com eles conseguimos, por

Elements

exemplo, configurar o mesmo servidor HTTP para uma determinada


solicitao.

Assertions

Elementos que possibilitam diversas verificaes nas respostas obtidas.

Pre Processors

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

Stress-test

Utilizando Elementos Bsicos


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

Elementos que podemos adicionar como filho / child

Test Plan

Thread

Group,

Listeners,

Config

Element,

Assertions,

Pre

Processor, Post Processor, Timer


Workbench

Logic Controller, Sampler, Config Element, Nom-Test Elements

Thread Group

Logic Controller, Listener, Sampler, Timer, Config Element, Pre


Processor, Post Processor

Sampler

Config Element, Assertion, Timer, Pre Processor, Post Processor

Logic Controller

Logic Controller, Sampler, Config Element, Timer, Listener, Pre


Processor, Post Processor

Listener

Nenhum

Configuration

Nenhum

Elements
Assertions

Nenhum

Pre Processors

Nenhum

Post Processors

Nenhum

Timer

Nenhum

22

Fundamentos

Stress-test

Elemento Test Plan


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

Se selecionado, executa cada

que o JMeter armazene o resultado das

grupo

requisies enviadas para o servidor.

Group)

de
em

usurios

(Thread

seqncia,

do

contrrio, executar as Thread


Groups de forma paralela.

23

Fundamentos

Stress-test

Workbench
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

Stress-test

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

Descrio

Login Config Element

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

Padro de acesso a servidores FTP.

HTTP Request Defaults

Padro de acesso a servidores HTTP.

HTTP

Para acesso a pginas protegidas que requerem logon via

Authorization

Manager

HTTP.

HTTP Cookie Manager

Permite

que

voc

configure

Cookies

para

enviar

nas

requisies HTTP.
HTTP Header Manager

Permite a customizao do Header HTTP utilizado para teste.

Java Request Defaults

Padres para testes em classes Java.

JDBC

Padres para login via JDBC

Database

Login

Defaults
JDBC

Database

Padres do pool utilizado para testes com JDBC.

Connection Pool Defaults


JDBC SQL Query Defaults

Padres de consultas SQL.

LDAP Request Defaults

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

Stress-test

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

Stress-test

Sampler
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

Descrio

FTP Request

Para efetuar downloads via FTP como parte do plano de testes.

HTTP Request

Utilizado para simular requisies HTTP, fazendo com o que o


JMeter atue como um browser. O Sampler mais utilizado.

SOAP/XML-RPC

Para requisies simples via SOAP. Configuramos uma URL e um

Request

XML para enviar para o servidor.

WebService

(SOAP)

Permite o envio de requisies WebService mais elaboradas.

Request (Alpha Code)

Capacidade de leitura de arquivos WSDL.

Java Request

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.

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

29

Fundamentos

Stress-test

Exemplo de HTTP Sampler

Informaes fornecidas no Config Element HTTP


Request Defaults. O preenchimento destes dados
causaria o efeito de sobreposio das informaes
padres.

Opes para simular um

Parmetros a serem enviados

upload de arquivo.

para o Controller.

30

Fundamentos

Stress-test

Exemplo de JDBC Sampler

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

Stress-test

Listeners
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

temos

totalizaes

execuo do Sampler Membership.

33

da

Fundamentos

Stress-test

Os seguintes Listeners j esto includos JMeter:


Listener

Descrio

Assertion Results

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

No disponvel.

Simple Data Writer

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

Mostra totalizaes diversas do resultado.

View Results in Table

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

Stress-test

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

Descrio

Interleave Controller

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

Dentro de um loop, executa determinada atividade somente uma vez.

Random Controller

Executar um conjunto de atividades aleatoriamente.

Throughput

Para controle avanado de vazo. Permite que voc opere um

Controller

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

Stress-test

Exemplo de Controladores Lgicos


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

Stress-test

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

Descrio

Response

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

Stress-test

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

Descrio

Counter

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

Stress-test

Exemplo de uso de pr-processadores:

42

Fundamentos

Stress-test

Exemplo de uso de parmetros or usurio:

43

Fundamentos

Stress-test

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

Stress-test

Timers
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

Descrio

Constant Timer

Permite que voc estabelea um intervalo em milisegundos padro


entre as threads.

Gaussian

Random

Uniform

Random

Permite configurao de intervalos aleatrios entre threads

Timer
Constant

Mantm a freqncia de acesso de um determinado Sampler. Voc

Throughput Timer

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.

45

Fundamentos

Stress-test

Exemplo de Timer:

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

Stress-test

Monitorao de Ambiente de Testes


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

Itens de Monitorao

Roteador Link Wan

CPU do roteador
Link Wan: entrada de pacotes, sada, colises
Memria (dado pouco crtico)

Servidores Fsicos:

CPU do servidor

Web Tier, EJB Tier e MySQL

Memria
Hard disk
Rede
I/O
Memria virtual

Servidores Lgicos:

No temos uma forma padro de coletarmos tais dados, cada

J2EE Web Server, J2EE

fabricante oferece uma forma para monitorao lgica do

EJB Server e MySQL

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

Stress-test

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

Stress-test

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

Stress-test

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

Stress-test

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

Stress-test

Ferramentas Comerciais de Monitorao


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

Ferramenta

BMC

Patrol

IBM

Tivoli

HP

Openview

Novell

ManageWise

Sun

Solstice

53

Fundamentos

Stress-test

Ferramentas no-comerciais de Monitorao


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

Funcionalidade

sar

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

Stress-test

Veja o resultado da execuo do comando vmstat 1:

r
0
0
0
0
0
0
0

procs
b w
0 0
0 0
0 0
0 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

memory
cache
40348
40348
40348
40348
40348
40348
40348

si
0
0
0
0
0
0
0

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

Coluna

Informao

procs ri

Processos aguardando para serem executados

procs b

Processos em sleep no-interrrompvel

procs w

Processos em swap porm em estado de runnable

memory swpd

Quantidade de memria virtual utilizada (kb)

memory free

Quantidade de memria disponvel (kb)

memory buff

Quantidafe de memria em buffer (kb)

swap si

Memria em swap do disco

swap so

Memria em swap para disco

io bi

Blocos enviados para um dispositivo de I/O

io bo

Blocos recebidos de um dispositivo de I/O

system in

Nmero de interrupes por segundo

system cs

Nmero de troca de contexto por segundo

cpu us

Porcentagem de uso da CPU para usurios

cpu sy

Porcentagem de uso da CPU para o sistema

cpu id

Porcentagem da CPU disponvel

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

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

% de acesso

Secretaria mantm cursos

5%

(adiciona, exclui, inclui e pesquisa)


Secretaria mantm turmas

35%

(criao de turmas, excluso, matrcula de alunos e modificao


de matrculas)
Secretaria mantm memberships

50%

Alunos se cadastram no sistema via Web

5%

Alunos efetuam matrculas via Web

5%

Clculo de Volume de Dados por Entidade


Entidade

Atual

Ano 1

Ano 2

Curso

25

35

50

Membership

4000

6000

8000

Turma

40

100

300

Matricula

600

1800

4000

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

Detalhes

Node #1

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

Software

Nome e Verso

Node #1

Apacha JMeter

1.9.1

Node #1

Java Development Kit

Java 2 Standard Edition 1.4.2-b28

Node #1

Sistema Operacional

Windows XP 5.1 build 2600.xpxp2


Service Pack 1

Node #2

Application Server j2EE

JBoss 3.2.2 (Wonderland)

Node #2

Driver JDBC MySQL

Fonte www.mysql.com verso 3.0.10

Node #2

Java Development Kit

Java 2 Standard Edition 1.4.2-b28

Node #2

Pooling de conexes

25 conexes configuradas no JBoss

Node #2

Sistema Operacional

Red Hat Linux 9.1 2.4.20-8

Node #3

MySQL Server

4.0.13

Node #3

Sistema Operacional

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

Funo

Members

Throughput Controller: as tarefas agrupadas neste controlador


devero representar 50% das requisies enviadas ao servidor.

Member Use-cases

Random Controller.

Member Incluir, Excluir,

Simulam as operaes disponveis para a entidade membership.

Editar e Listar
TurmasMatriculas

Throughput Controller: as tarefas agrupadas neste controlador


devero representar 45% das requisies enviadas ao servidor.

Turmas

Random Controller.

Turmas Incluir, Editar,

Simulam as operaes disponveis para as entidades turmas e

Listar, Matriculas Incluir,

matrculas.

Excluir e Editar
Cursos

Throughput Controller: as tarefas agrupadas neste controlador


devero representar 5% das requisies enviadas ao servidor.

Cursos -> Cursos

Random Controller.

Cursos Incluir etc.

Simulam as operaes da entidade curso.

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

Resumo

Node #3

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

Você também pode gostar