Escolar Documentos
Profissional Documentos
Cultura Documentos
Fundamentos Stresstest - JMETER
Fundamentos Stresstest - JMETER
Stress-test
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;
UML;
Computao distribuda;
TCP/IP
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:
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
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
EJB?
Web?
Strtus?
HTTPS?
BMP?
Browser?
Hibernate?
LDAP?
CMP?
Applet
Commons?
Declarativa?
MDB?
Swing?
Cocoon?
Programada?
Requisitos no-funcionais
Use-cases
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
Perguntas disertativas
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
% de acesso
5%
35%
50%
5%
5%
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
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;
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
Documentao
poca de Matrcula
13
Fundamentos
Stress-test
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
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.
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
Incidncia
Global
local
Ao
Actor
Etapas
Secretaria
Request de form
35%
Cadastrar novo
membership
35%
Submit de form
Alterar dados de
Secretaria
membership
5%
Excluso de
Secretaria
memberships
Load
Edit
Delete
25%
Visualizao de dados
Secretaria
Load
Edit
5%
Matricular membership
Secretaria
5%
Excluir matricula
Secretaria
5%
Alterar
dados
da
Secretaria
matrcula
5%
Criao de turmas
Secretaria
Request de form
Submit de form
80%
Visualizao de turmas
e matrculas
Secretaria
*Vamos considerar a operao de login como aleatria, pois no temos 1 login por operao.
16
Fundamentos
Stress-test
Incidncia
Global
local
Ao
Actor
Etapas
Secretaria
Request de form
60%
Cadastrar novo
membership
25%
Submit de form
Alterar dados de
Secretaria
membership
5%
Excluso de
Secretaria
memberships
Load
Edit
Delete
10%
Visualizao de dados
Secretaria
Load
Edit
50%
Matricular membership
Secretaria
5%
Excluir matricula
Secretaria
15%
Alterar
dados
da
Secretaria
matrcula
5%
Criao de turmas
Secretaria
Request de form
Submit de form
25%
Visualizao de turmas
e matrculas
Secretaria
*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;
Alta extensibilidade:
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:
19
Fundamentos
Stress-test
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
Workbench
Thread Groups
Representa
um
grupo
de
usurio
executando
determinada(s)
solicitao(es).
Samplers
Logic Controllers
Listener
Configuration
Elements
Assertions
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
Timer
21
Fundamentos
Stress-test
Test Plan
Thread
Group,
Listeners,
Config
Element,
Assertions,
Pre
Thread Group
Sampler
Logic Controller
Listener
Nenhum
Configuration
Nenhum
Elements
Assertions
Nenhum
Pre Processors
Nenhum
Post Processors
Nenhum
Timer
Nenhum
22
Fundamentos
Stress-test
Posteriormente, podemos
utilizar a varivel atravs de
${ctx}
grupo
Group)
de
em
usurios
(Thread
seqncia,
do
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
Descrio
HTTP
Authorization
Manager
HTTP.
Permite
que
voc
configure
Cookies
para
enviar
nas
requisies HTTP.
HTTP Header Manager
JDBC
Database
Login
Defaults
JDBC
Database
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.
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
HTTP Request
SOAP/XML-RPC
Request
WebService
(SOAP)
Java Request
JDBC Request
LDAP Request
Vamos exemplificar o uso de Sampler atravs do HTTP Sampler pelo fato de ser o mais
utilizado atualmente.
29
Fundamentos
Stress-test
upload de arquivo.
para o Controller.
30
Fundamentos
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
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.
e apresentada resultados
de
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:
temos
totalizaes
33
da
Fundamentos
Stress-test
Descrio
Assertion Results
Graph Results
Mailer Visualizer
No disponvel.
Spline Visualizer
Aggregate Report
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
Simple Controller
Representa
um
grupo
de
Samplers.
Utilizado
com
fins
Module Controller
Random Controller
Throughput
Controller
Recording Controller
35
Fundamentos
Stress-test
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 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
Duration
Size
XML
38
Fundamentos
Stress-test
39
Fundamentos
Stress-test
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
User Parameters
Voc pode configurar uma varivel que tem um valor diferente para
cada usurio (thread). Recurso bastante til.
HTTP
Modifier
URL
Re-writing
41
Fundamentos
Stress-test
42
Fundamentos
Stress-test
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
Gaussian
Random
Uniform
Random
Timer
Constant
Throughput Timer
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
Hub
MySQL
Router
EJB Tier
Web Tier
Itens de Monitorao
CPU do roteador
Link Wan: entrada de pacotes, sada, colises
Memria (dado pouco crtico)
Servidores Fsicos:
CPU do servidor
Memria
Hard disk
Rede
I/O
Memria virtual
Servidores Lgicos:
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:
Servidor Unix;
Servidor Windows;
Mainframes;
Oracle;
Satlites e bridges;
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 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.
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.
52
Fundamentos
Stress-test
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;
Identificao de gargalos;
Corelacionamento de eventos;
Ferramenta
BMC
Patrol
IBM
Tivoli
HP
Openview
Novell
ManageWise
Sun
Solstice
53
Fundamentos
Stress-test
Funcionalidade
sar
vmstat
netstat
54
Fundamentos
Stress-test
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
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
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 &
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
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
Capturar requistos;
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 do ambiente fsico utilizado: servidores, rede, memria, hard disk etc.
Relatrio de Concluses.
57
Perguntas
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
% de acesso
5%
35%
50%
5%
5%
Atual
Ano 1
Ano 2
Curso
25
35
50
Membership
4000
6000
8000
Turma
40
100
300
Matricula
600
1800
4000
59
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;
Detalhes
Node #1
Node #2
Node #3
60
Software
Nome e Verso
Node #1
Apacha JMeter
1.9.1
Node #1
Node #1
Sistema Operacional
Node #2
Node #2
Node #2
Node #2
Pooling de conexes
Node #2
Sistema Operacional
Node #3
MySQL Server
4.0.13
Node #3
Sistema Operacional
61
62
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
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
Member Use-cases
Random Controller.
Editar e Listar
TurmasMatriculas
Turmas
Random Controller.
matrculas.
Excluir e Editar
Cursos
Random Controller.
64
Resumo
Node #3
Node #2
Node #1
65
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.
66
67
68