Performance em
aplicações web – Parte I
Vanilson Burégio
[email protected]
Objetivo da aula

Discutir os principais conceitos e métricas
relacionadas com performance e utilizar
ferramenta para monitorar e melhorar a
performance de uma aplicação web
Por que monitorar performance?
Seguimos todos os
padrões de codificação
estabelecidos!
Não temos tempo nem
dinheiro para executar
testes de performance!

Nós realizamos testes
unitários, o sistema não
deveria ter nenhum erro!
A aplicação funciona
muito bem quando
executo no meu laptop!
Qualquer empresa que implanta uma
aplicação sem conduzir testes de performance
está assumindo altos riscos!
Os custos de uma má performance

Custo de suporte para tornar a aplicação escalável
– Mais recursos são necessários para suportar a aplicação em
produção

Perda da confiança do cliente
– Tempos de respostas altos não são aceitos pelos usuários

Perda da credibilidade
– Níveis de performance não correspondem ao que foi fechado no
contrato

Perda de dinheiro $
– O efeito inevitável de perda de clientes
Quando pensar em performance






Projeto da Arquitetura
Período de desenvolvimento
Fase de testes de componentes e unitários
Fase de testes de performance
Implantação
Resumo:
– considere performance em todos os passos desde
o projeto até a implantação da aplicação
O que deve ser analisado em uma
aplicação web



Código do cliente
HTTP Server
Application server
– Containers (EJB, WEB)




Banco de dados
Rede (dispatchers)
Roteadores
Firewalls
O ambiente de uma aplicação pode ser simples ou
complexo e uma série de elementos devem ser
analisados
Exemplo de Arquitetura
O que pode causar problemas de
performance?
Firewall?
Network dispatcher?
Application Server?
Projeto da Aplicação?
Web Server?
Banco de dados?
Hardware?
Por que fazer testes de performance?

Reunir dados de desempenho da aplicação para
tomar decisões de negócios que afetem a aplicação

Melhorar a qualidade percebida pelo usuário
– Atributos de qualidade chaves: tempo de resposta e
velocidade

Descobrir defeitos que afetam o desempenho da
aplicação

Impacto de descobrir defeitos tarde
Custo por Defeito
1
10
100
Projeto
Teste
Produção
Objetivos de testes de performance

Identificar tempos de resposta do sistema
– Validação de requisitos e objetivos de desempenho
– Benchmarking
– Acordo de Nível de Serviço (SLAs)

Determinar o número máximo de usuários de um
sistema
– Planejamento da capacidade
– Escalabilidade

Descobrir as configurações ótimas e mínimas
– Carga normal e carga máxima
– Customizar configurações do ambiente
Termos relacionados com
performance

Vocabulário fundamental para especialistas em
performance

Termos chaves
–
–
–
–
–
–
–
Tempo de resposta (Response time)
Carga (Load)
Vazão (Throughput)
Caminho da aplicação (Path Length)
Gargalo (Bottleneck)
Escalabilidade (Scalability)
Capacidade (Capacity)
Tempo de Resposta

O tempo de resposta mede o tempo em que um
espera por uma requisição
– Normalmente expresso como uma média ou 95%

Maiores componentes do tempo de resposta
– Tempo de processamento
– Tempo de transmissão (usualmente parte do tempo de
processamento)
– Qualquer tempo de espera em fila

Qual o tempo de resposta aceitável?
– Isso é definido pelos padrões da indústria!
Tempo de Resposta



Processo de saída inicia quando o cliente entra na fila
Processo de saída termina quando o cliente recebe
seus produtos
Componentes do tempo de resposta:
–
–
–
–
Tempo na fila
Tempo real de registro das compras
Pegar dinheiro e receber o troco
Empacotar as mercadorias
Tempo de Resposta

Medido a partir da solicitação feita a página retornada

Tempo de resposta de um web site é em função do:
– Tempo de puro processamento
– Mais tempo de espera em qualquer número de filas
– Mais tempo de transferência entre múltiplos componentes
Medição crítica de tempo de resposta

Tempo de resposta é uma medição crítica

Tempos de respostas ruins => clientes insatisfeitos

Muitos web sites falham por causa de questões
relacionadas a tempo de resposta

Considere tempo de resposta:
– Sob cargas em horários de pico
– Sob cargas excepcionais (dias de alta demanda: natal)
– Sobre conexões lentas (dial-up)
Carga (load)

Carga é a “pressão” sobre o web site

Expressado como:
– Atividade do usuário
• Chegadas dos usuários
• Logging dos usuários
• Envio de solicitações dos usuários
– Atividade de solicitação
• Solicitações por segundo, páginas por hora, etc...
Carga (load)

Carga é a “pressão” sobre o web site

Expressado como:
– Atividade do usuário
• Chegadas dos usuários
• Logging dos usuários
• Envio de solicitações dos usuários
– Atividade de solicitação
• Solicitações por segundo, páginas por hora, etc...
Vazão (Throughput)

Vazão mede as coisas finalizadas em uma unidade de
tempo
– Exemplo: páginas de um site servidas por segundo

Vazão é aplicada em muitos conceitos, não apenas
web sites
– Restaurante: clientes servidos por hora
– Túneis: carros que passam por minuto
– Departamento de embalagem em lojas: pacotes embrulhados
por dia
Vazão Máxima

Vazão máxima é uma medida da capacidade
– Saídas de um sistema obtidas em uma unidade de tempo

Exemplo do restaurante
– Se o restaurante tem apenas 1 funcionário servindo
– ... e ele leva um minuto para servir um cliente
– ... então a vazão máxima é de 1 cliente por minuto

Não é uma medida da quantidade de solicitações,
apenas quantas foram completadas
– Excesso de solicitações podem ser enfileiradas, sair ou
serem descartadas
Saturação da Vazão

Na vazão máxima cargas adicionais não vão
aumentar a vazão

Vazão máxima é um ponto de saturação
– 100% de utilização da CPU é o caso ideal
Vazão
Transações / segundo
Ponto de saturação
Usuários concorrentes
Exemplo de cafeteria saturada


Um servidor ou sistema pode atender mais cargas
além da vazão máxima
Cafeteria
– Se os clientes chegam um pouco mais rápido que o
funcionário serve:
•
•
•
•
Fila
Tempo de resposta permanece bom
Tempo de resposta = tempo na fila + tempo do serviço
A vazão é a mesma (tempo de serviço constante)
– Entretanto, se a quantidade de pessoas chegar
significantemente mais rápido que a taxa de serviço
• Tempo de resposta aumenta bem como o tempo de espera
• A vazão eventualmente se torna comprometida
Como medir isso em aplicações web?
Como medir isso em aplicações web?
Como medir isso em aplicações web?
DEMONSTRAÇÃO
PRÁTICA
Download

Performance e tuning de aplicações