Geradores de Carga de Trabalho para Servidores Web Dayse Silveira de Almeida Orientadora: Regina Helena Carlucci Santana
Roteiro Geradores de Carga de Trabalho: W4Gen; Jmeter; SPECWeb2005; WebStone; Httperf; Geist.
World Wide Web Workload Generator (W4Gen) Desenvolvido por Silva (2006), em Java; Objetivo: gerar cargas de trabalho sintéticas para modelos de servidores Web; Carga é gerada a partir da caracterização de nove logs de servidores Web Apache; CISC (Centro de Informática de São Carlos), da Prefeitura de Londrina e do Br10, Cdmil, Tum, Copi, Stanford , Veenet e Connectmed. Três categorias: Acadêmico; Notícia/informativo; Tradicional.
World Wide Web Workload Generator (W4Gen) Utilizou-se a biblioteca PSOL (Probability/ Statistics Object Library) [Siegrist, 2005]; Adicionou-se Pareto Geral; Adaptou-se a função Geométrica: Características do objeto e do código de resposta.
Modelo da Carga de Trabalho Características: Intervalo de chegada - [0, +∞) ; Classe do objeto - [imagem, html, dinâmico, texto, documento, scritp, binário, áudio, vídeo]; Código de reposta - [2xx, 3xx, 4xx, 5xx] ; Tamanho do objeto - [0, +∞). Figura 1: Formato da requisição do W4Gen.
Configuração da Carga de Trabalho Sua carga pode ser configurada: Web; Ambientes pré-definidos: Site acadêmico; Site de notícia; Site tradicional. Permite selecionar uma função de distribuição; Criação de um novo modelo de carga.
Configuração da Carga de Trabalho Código de resposta: Requisição 200 – código de resposta 200 é acrescendo a todas as requisições; Função de distribuição – Geométrica, parâmetro deve ser configurado; Valores de porcentagem – quatro tipos devem ser configurados. Classes de objeto: Função de distribuição – Geométrica, parâmetro deve ser definido; Valores de porcentagem – nove tipos devem ser configurados. Intervalo de chegada: Função de distribuição e parâmetros configuráveis; Sobrecarga: comprimir o tempo de chegada entre as requisições. Tamanho do objeto: Função de distribuição e parâmetros configuráveis. Mudanças nos valores padrão podem reproduzir um comportamento diferente da realidade da Web.
JMeter Ferramenta de código aberto, escrita em Java; Desenvolvida pelo Apache Software Foundation; Criada para realizar testes de desempenho em aplicações Web; Testa recursos estáticos e dinâmicos: Arquivos estáticos; Java Servlets; Scripts Pearl; Java Objects; Servidores FTP.
JMeter Usado para simular cargas para testar o desempenho de servidores e redes. Diferentes tipos de servidores: Web – HTTP (HyperText Transfer Protocol) e HTTPS (HyperText Transfer Protocol Secure); SOAP (Simple Object Access Protocol); Banco de dados via JDBC (Java Database Connectivity); LDAP (Lightweight Directory Access Protocol); JMS (Java Message Service); E-mail – POP3 (Post Office Protocol - Version 3); Simula o acesso de diversos usuários concorrentes.
SPECWeb2005 Desenvolvido pela Standart Performance Evaluation Corporation (SPEC); Objetivo: Medir o desempenho de servidores Web respondendo a requisições a páginas estáticas e dinâmicas; Visa avaliar sua sobrecarga; Plataformas: Windows; Unix.
Figura 2: Componentes lógicos do SPECWeb2005 (SPEC, 2005). Clientes – geradores de carga; Cliente principal – controla os clientes, dispara rotinas de inicialização, armazena resultados; Servidor – coleção de hardware e software que controla as requisições; BeSim – simula um back-end, e contém informações usadas pelo Servidor Web. Figura 2: Componentes lógicos do SPECWeb2005 (SPEC, 2005).
Figura 3: Fases do SPECWeb2005 (SPEC, 2005). Funcionamento Número de sessões simultâneas corresponde ao número de threads; “Sessão de usuário” passa por vários estados; Cliente principal controla as fases de execução: Figura 3: Fases do SPECWeb2005 (SPEC, 2005).
Funcionamento Cronômetro é iniciado antes do envio da requisição e parado quando recebe último byte da resposta; Respostas válidas: Tempo agregado a página; Conferido com os valores de QoS; Campo de QoS correspondente incrementado. TIME_GOOD, TIME_TOLERABLE ou TIME-FAIL. Ao término da execução: Dados de todos os clientes são agregados; É determinado se os critérios de QoS foram alcançados.
Geração da Carga de Trabalho Gera cargas baseadas em aplicações Web reais, baseando- se em logs e estatísticas coletadas; Três tipos: Banking; E-commerce; Support. Cada requisição: execução de um script dinâmico e, arquivos embutidos; Requisitos de QoS: atraso de retorno e taxa de bytes.
Figura 4: Elementos de um teste usando o WebStone (WebStone, 2002). Originalmente desenvolvido pela Silicon Graphics; Mindcraft Inc. adquiriu seus direitos; Carga é gerada através da simulação de vários clientes; Webmaster – programa que controla o teste. Figura 4: Elementos de um teste usando o WebStone (WebStone, 2002).
WebStone Envio de requisições HTTP/1.0 (GET) para arquivos específicos; Conjunto de arquivos: Baseado no modelo do site da Silicon Graphics, de 1995; Pode ser alterado; Padrão é pequeno; Três tipos de acesso: HTML (HyperText Markup Language); CGI (Common Gateway Interface); API (Application Programming Interface). Características foram obtidas através de padrões de acesso a sites populares. Resultados: vazão, latência de conexão e latência da requisição.
Httperf Suporta HTTP/1.0 e HTTP/1.1; Dois tipos de geradores de carga: Geram um número fixo de requisições HTTP do tipo GET. De requisições – Gera conexões e cada uma executa uma requisição (HTTP/1.0); Cria sessões, constituídas de rajadas de requisições e tempo de pensar. De URL – Repete a seqüência de URLs; Flui por um conjunto fixo de URLs a uma determinada taxa.
Geist Gera carga com conteúdo de e-commerce; Não simula explicitamente, usuários, protocolos ou componentes de rede; Propriedades do tráfego são modeladas diretamente no servidor; Gerador de trace define 30 parâmetros aos quais podem ser atribuídos valores em um arquivo de entrada; Gera um arquivo de trace, que pode ser dividido entre múltiplos clientes; Gerador de tráfego também é controlado atribuindo valores a parâmetros pré-definidos.
Número de Usuários/ Clientes Comparação Número de Usuários/ Clientes Protocolos Conteúdo Sessão W4Gen Múltiplos HTTP/1.0 e HTTP/1.1 Estático e dinâmico Não JMeter HTTP e HTTTPS SPECWeb2005 HTTP e HTTPS Sim WebStone HTTP/1.0 Httperf Geist Múltiplos * Sim ** * Não simula usuários explicitamente; ** Considera o impacto do comportamento do usuário nas propriedades temporais do tráfego. * Não simula usuários explicitamente, mas cria diversas threads que irão originar requisições em determinado instante de tempo. ** Considera o impacto do comportamento do usuário nas propriedades temporais do tráfego: o comportamento do usuário, muitas vezes caracterizado por períodos de alta e baixa atividade, cada um com distribuição de cauda pesada. As correlações nas chegadas de processo podem afetar substancialmente o comportamento das filas. A chegada de processos é gerada através da distribuição de Poisson. - Geist: analisa logs para caracterizar as propriedades de tráfego.
Referências Httperf (2009). Disponível em http://www.hpl.hp.com/research/linux/httperf/. JMeter (2008). Disponível em http://jakarta.apache.org/jmeter. Silva, L. H. C. (2006). Caracterização de Carga de Trabalho para Testes de Modelos de Servidores Web. Dissertação de mestrado, Instituto de Ciências Matemáticas e de Computação - Universidade de São Paulo. SPEC (2005). Standard Performance Evaluation Corporation Web 2005 (SPECWeb2005). Disponível em http://www.spec.org. WebStone (2002). The Benchmark for Web Servers. Disponível em http: //www.mindcraft.com/webstone/.