introdução aos testes de desempenho
DESCRIPTION
A apresentação aborda motivação para a realização dessa modalidade de testes, bem como os conceitos principais que precisam ser compreendidos. Também apresenta uma metodologia básica de um teste de desempenho, as principais métricas que necessitam ser capturadas e analisadas e as ferramentas atualmente disponíveis no mercado. Por último são abordados ainda os erros mais comuns ao se planejar e executar essa classe de testes.TRANSCRIPT
Introdução aos Testes de Desempenho César Fernandes Teixeira
César Fernandes Teixeira
Analista de Desempenho – Base2 Tecnologia Mestre em Ciência da Computação (UFMG) Bacharel em Ciência da Computação (UFMG) Certificado CTFL pelo ISTQB Participou, durante a graduação e mestrado, de
projetos de pesquisa de análise e modelagem de desempenho, planejamento de capacidade e projeto experimental em ciência da computação
2
PARTE 1: Introdução e Motivação
3
Motivação
4
Servidor e-commerce
?!
Motivação
5
Servidor e-commerce
?
?
?
Motivação Sistema de Seleção Unificada (Sisu) - 2011
6
Motivação Amazon - 2008
7
Fonte: http://idgnow.uol.com.br
Introdução Os testes de desempenho permitem:
Saber o comportamento do sistema sob a carga esperada
Saber a carga máxima suportada pelo sistema
Planejar melhorias no ambiente para atender a demandas atuais e futuras
Não perder clientes por falhas no desempenho
8
Introdução
9
Teste de carga• Testes realizados para verificar se o sistema suporta uma
determinada carga desejada
Teste de estresse• Testes realizados para determinar a capacidade máxima do
sistema
Teste de estabilidade• Testes realizados para verificar se o sistema degrada o
desempenho com o tempo
• Tipos de testes de desempenho
Fronteiras entre os testes podem não ser tão rígidas!
Conceitos Principais
10
• Carga: volume de tráfego para um determinado sistema. Geralmente medida em transações, requisições e usuários.
• Requisição: requisição http realizada.
Conceitos Principais
11
• Transação: operação completa no sistema. Por exemplo, buscar um produto.
• Sistema: todo o conjunto de servidores, rede entre servidores, softwares de terceiros e a aplicação.
• Utilização de um recurso: percentual, em uso, do total de recursos disponíveis.
Conceitos Principais
12
• Tempo de resposta: Tempo desde o momento em que o usuário envia a requisição até o momento em que recebe a resposta completa. • Definição não é universal. • Na nomeclatura do Jmeter , é o elapsed time
Conceitos Principais
13
• Profiling: instrumentação da aplicação para estudo dos métodos e seus tempos de execução.
• Vazão: taxa com que um sistema responde às requisições recebidas.
• Gargalo: tudo o que impede que o sistema apresente maior vazão.• Se a vazão for inferior à taxa com que as requisições
são enviadas ao sistema.
PARTE 2: Metodologia de um Teste de
Desempenho
14
Visão Geral
15
Sistema
?
?
?
Gerador de Carga
!
!
!
Processo de Testes: Etapa 0
16
A etapa inicial é entender os objetivos dos testes• É interessante saber como o sistema se comporta com a
carga atual?• É interessante saber qual a carga máxima que o sistema
suporta?• É interessante conhecer e apontar os gargalos?• Entender qual o sistema a ser testado e a arquitetura do
ambiente.• Qual o limite de tempo de resposta aceitável? (6
segundos).
Processo de Testes: Etapa 0
17
Onde instalar os geradores de carga?• Na mesma rede do sistema• Na mesma rede onde os clientes estarão
Meio de acesso
Processo de Testes: Etapa 0
18
Testar a aplicação do cliente?• Testar o desempenho em browsers diferentes?• Testar o desempenho na aplicação cliente (frontend)?• Testar somente os servidores?
Processo de Teste
19
Configuração do Ambiente
Configurar o sistema que será testado Configurar as máquinas que irão gerar a carga Configurar o monitoramento do ambiente
• O que deve ser monitorado?
20
Monitoramento do sistema
21
Métricas Sistema Operacional (Todas as máquinas)
• Utilização CPU, memória, Swap, disco, rede, etc.• /proc, perfmon, vmstat, etc.
Monitoramento do sistema
22
• Ex: Utilização CPU
Monitoramento do sistema
23
Métricas Banco de Dados• Tempo ocupado, tempo execução médio por query, locks,
leituras físicas e lógicas, etc.• Relatório AWR, etc.
Monitoramento do sistema
24
Ex: Relatório AWR (Oracle)
Monitoramento do sistema
25
Profiling (Servidor de aplicação)
• Tempo de execução por método, tempo de execução em CPU por método, memória consumida por classe, etc.
• VisualVM, RedGate Ants, etc.
Monitoramento do sistema
26
Ex: VisualVM (Java)
Monitoramento do sistema
Há ferramentas que facilitam o monitoramento do sistema:• New Relic
• Integra profiling e monitoramento de métricas do sistema operacional.
• Cacti•Monitoramento de métricas do SO.
• Up.time•Monitoramento de métricas do SO.
27
Modelagem
28
Entender o comportamento dos usuários que se deseja simular (Caracterização)
Criar os scripts para simular as transações de interesse
Modelagem: Caracterização
29
Quantos usuários simultâneos o sistema terá/tem na média? E no momento de pico? 100 usuários. Pico de 300.
Qual a demanda estimada para o futuro? Espera-se um aumento de 50% nos acessos em 1 ano
Quais as transações no sistema que são mais relevantes? Busca por produto e checkout.
Qual a taxa de transações de cada categoria? 200 buscas por minuto, 20 checkouts por minuto.
Modelagem: Caracterização
30
Os dados são obtidos geralmente de duas maneiras• Estudo dos logs dos servidores• Relatórios gerenciais contendo essas informações
Modelagem: Caracterização
31
Exemplo log Apache
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /index.html HTTP/1.0" 200 2326127.0.0.1 - frank [10/Oct/2000:13:56:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326192.168.0.1 - paulo [10/Oct/2000:14:06:36 -0700] "GET /checkout.php HTTP/1.0" 200 2326
Modelagem: Scripts
32
Criar scripts para as operações levantadas na caracterização;
Configurar a carga planejada para cada script;
Geralmente os geradores de carga possuem a funcionalidade de criar scripts. Ex: Jmeter, Microfocus SilkPerformer, etc.
Modelagem: Scripts
33
Exemplo: JMeter
Execução dos testes
34
• Gerador de carga • Dispara a carga definida nos scripts criados• Captura as métricas do cliente (i.e. tempo de
resposta, vazão, etc)
• Monitoramento do sistema encontra-se ativo
• A execução gera uma massa de dados que será analisada para a geração do relatório final
Execução dos testes
35
Ferramentas• Jmeter
• Gratuita. Em alguns casos é necessário codificar parte do teste. Menor suporte a tecnologias, como RMI, ajax, silverlight, etc.
• Httperf• Gratuita. Somente para testar get a um conjunto de páginas.
• Microfocus SilkPerformer• Paga. Ainda é preciso codificar partes dos testes em alguns
momentos. Suporta diversas tecnologias mais recentes.• GOMEZ
• Paga. Geração de carga a partir da nuvem. A ferramenta é capaz de monitorar o sistema, inclusive, com profiling.
Relatório Final
36
A partir da massa de dados gerados pela execução, busca responder:• Sistema suporta a carga esperada?• Qual a carga máxima que o sistema suportou?• Ocorreram falhas ou queda no sistema com o
aumento na carga?• Quais os gargalos e o que pode ser feito para
melhorar a vazão?
PARTE 3: Cenário atual, erros comuns e
considerações finais
37
Cenário Atual
38
• Geralmente os testes são feitos no ambiente de homologação
• Geralmente utiliza-se o Jmeter como gerador de carga
Erros comuns
39
• Uso de ferramenta inadequada.
• Não monitorar todo o ambiente. • Desconfie do “Isso não é um problema”.
• Não conhecer o ambiente. • Conheça o ambiente a ser testado antes de planejar
os testes.
Erros comuns
40
• Não caracterizar o sistema.
• Não conhecer os objetivos dos testes.
• Testar depois do sistema estar em produção.
• Não testar no ambiente de produção.
• Somente executar cada teste uma única vez.
Considerações finais
41
• Os testes de desempenho são ferramentas poderosas para entender o comportamento de um sistema e prever sua capacidade máxima.
• A execução e planejamento podem ser complicados e devem ser feitos de maneira cuidadosa.