Apr 17, 2015
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?
Qualquer empresa que implanta uma aplicação sem conduzir testes de performance está assumindo altos riscos!
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!
Não temos tempo nem dinheiro para executar testes de performance!
Seguimos todos os padrões de codificação
estabelecidos!
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?
Network dispatcher?
Firewall?
Hardware?
Application Server?
Banco de dados?
Projeto da Aplicação?
Web Server?
Por que fazer testes de performance?
Custo por Defeito
1 10 100Projeto Teste Produção
Impacto de descobrir defeitos tarde
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
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
ãoT
rans
açõe
s / s
egun
do
Usuários concorrentes
Ponto de saturação
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