24
Performance em aplicações web – Parte I Vanilson Burégio [email protected]

Performance em aplicações web – Parte I Vanilson Burégio [email protected]

Embed Size (px)

Citation preview

Page 1: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

Performance em aplicações web – Parte I

Vanilson Burégio

[email protected]

Page 2: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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

Page 3: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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!

Page 4: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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

Page 5: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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

Page 6: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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

Page 7: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

Exemplo de Arquitetura

Page 8: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

O que pode causar problemas de performance?

Network dispatcher?

Firewall?

Hardware?

Application Server?

Banco de dados?

Projeto da Aplicação?

Web Server?

Page 9: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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

Page 10: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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

Page 11: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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)

Page 12: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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!

Page 13: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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

Page 14: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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

Page 15: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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)

Page 16: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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

Page 17: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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

Page 18: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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

Page 19: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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

Page 20: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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

Page 21: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

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

Page 22: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

Como medir isso em aplicações web?

Page 23: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

Como medir isso em aplicações web?

Page 24: Performance em aplicações web – Parte I Vanilson Burégio vanilson@gmail.com

Como medir isso em aplicações web?

DEMONSTRAÇÃO PRÁTICA