Modelo de simulação de um processo de requisições em um servidor web de alta disponibilidade Tiago de Azevedo Santos tiago@iff.edu.br João José de Assis Rangel joao@ucam-campos.br RESUMO Este trabalho apresenta um modelo de simulação para análise da carga de requisições feitas em um servidor Web de alta disponibilidade, instalado no Instituto Federal Fluminense. O modelo foi gerado a partir de informações extraídas dos logs de sistema, os quais são arquivos gerados pelo sistema operacional após cada evento que nele acontece. O modelo permitiu analisar as atuais cargas de requisições feitas ao servidor Web, assim como suas limitações em relação ao número máximo de requisições suportadas na atual configuração. Palavras-chave: Simulação, Modelagem, Servidor Web, Redes de Computadores, Análise da Carga. Simulation model of a requisition process in a high availability web server ABSTRACT This paper presents a simulation model for the analysis of the load requisitions made in a web server of high availability, which was installed at the Instituto Federal Fluminense. The simulation model was generated from information extracted from system logs, which are files generated by the operating system after the occurrence of each event. The model allowed the analysis of the current load requisitions made to the web server, as well as its limitations in relation to the maximum number of requisitions supported in the current configuration. Key words: Simulation, Modeling, Web Server, Computer Network, Load Analysis. 248
Modelo de simulação de um processo de requisições em um servidor web de alta disponibilidade 1. Introdução A convergência das tecnologias de comunicação e computação tem proporcionado o surgimento de novos tipos de aplicações e serviços oferecidos pela Internet, contribuindo substancialmente para o seu crescimento. Hoje, várias transações comerciais, antes realizadas apenas presencialmente com a participação do cliente ou por telefone, agora podem ser realizadas com a facilidade e flexibilidade propiciada pelo uso da Internet. Alguns exemplos desses novos serviços são: o comércio eletrônico, internet bank, comércio móvel (m-commerce), educação a distância, entretenimento e multimídia, entre outros. Todos esses serviços adotam a Internet como via de informação global e apresentam novas demandas em questões de desempenho, segurança e confiabilidade. Dentro desse cenário, motivado pelo crescimento do número de serviços oferecidos pela Internet, dentro do paradigma de mesmo serviço para todos da Internet atual, a comunidade científica desenvolve pesquisas na área de QoS (Qualidade de Serviço). Para suprir as necessidades das atuais aplicações web, garantindo requisitos de QoS, servidores web devem se tornar providos de mecanismos que garantam o atendimento aos clientes, por isso a importância de se analisar a reação do servidor quando deparado com sobrecargas. Segundo Vasiliou e Lutfiyya (2000), o servidor web, elemento principal na maioria das aplicações realizadas através da internet, não apresenta mecanismos de diferenciação de serviços, tratando as requisições a essas páginas de maneira uniforme, sem levar em consideração a identidade dos clientes, as condições de carga do servidor ou o tipo de requisição. Para suprir as necessidades das atuais aplicações web, garantindo requisitos de QoS, servidores web devem se tornar providos de mecanismos e políticas, a fim de evitar sobrecargas, conhecer suas limitações e explorar todo o recurso hardware e de software que a máquina pode oferecer. Uma forma interessante de se fazer essa análise é simulando todo o processo antes de implementá-lo fisicamente. De acordo com Freitas Filho (2008), a simulação tem sido cada vez mais aceita e empregada, visto que houve aumento significante no poder de processamento das estações de trabalho aliado à facilidade de uso e à sofisticação dos ambientes de desenvolvimento de modelos computacionais. Nesse contexto, a simulação discreta tornase útil, pois é excelente ferramenta e proporciona aos administradores de servidores web a certeza que está sendo bem administrado e opere buscando o máximo de eficiência possível. Dentro desse quadro, este trabalho descreve um modelo de simulação que aborda o processo de requisições em um servidor web de alta disponibilidade implementado no Instituto Federal Fluminense, a fim de analisar a variação e as limitações de carga que esse servidor suporta. Para isso, foram desenvolvidos experimentos, e dados gerados pelo sistema operacional foram analisados. Esses dados se tornaram subsídios para efetuar a modelagem e simulação com o software Rockwell Arena. 2. Descrição do processo de requisição em um servidor web A modelagem proposta neste trabalho seguirá uma estrutura lógica, pois fisicamente os processos são alocados no mesmo servidor. Na Figura 1, pode-se notar a estrutura que é transparente para o usuário que solicita as requisições. Figura 1 - Fluxo simples de uma requisição. A requisição é feita pelo usuário através dos protocolos de internet, chega ao servidor e retorna a resposta para o usuário. A Figura 2 representa como realmente é o fluxo da requisição solicitada pelo usuário. 249
Tiago de Azevedo Santos e João José de Assis Rangel Figura 2 - Fluxo detalhado de uma requisição. A requisição que chega ao servidor web é processada por um software chamado de Apache, e esse mesmo software analisa a requisição e a repassa para outro software, chamado de Varnish, que é responsável por fazer o cache das informações, ou seja, ele consegue guardar, dentro de um limite de espaço, as informações que são mais comumente requisitadas e, assim, retornar diretamente para o usuário, reduzindo o tempo de atendimento à requisição. Essa etapa otimiza aproximadamente 32% das requisições recebidas pelo servidor. Se a requisição não for atendida pelo Varnish, ela é encaminhada para outro software, o Pound, que é responsável por encaminhar a requisição de forma balanceada para um dos três clientes Zope, que finalmente irão processar e retornar a resposta da requisição para o usuário que a solicitou. Todos esses processos juntos demandam menos que 1 seg para serem atendidos. A representação do modelo conceitual mais detalhada, utilizando elementos do IDEFSIM (MONTEVECHI, 2010), assim como as funções utilizadas na simulação, pode ser mais bem visualizada na Figura 3. Figura 3 - Modelo conceitual (IDEF-SIM) do sistema de requisições em um servidor web. 250
Modelo de simulação de um processo de requisições em um servidor web de alta disponibilidade A descrição do modelo conceitual utilizando a técnica IDEF-SIM pode ser mais bem visualizada na Tabela 1. Tabela 1 - Descrição do modelo conceitual Descrição E1 Entidade 1: Requisição solicitada ao servidor web P1 Processo: Análise feita pelo Apache P2 Processo: Análise, encaminhamento ou entrega feita pelo Varnish P3 Processo: Análise e encaminhamento feita pelo Pound Parâmetro Função: 0.01 + LOGN (0.259, 0.173) a cada segundo durante 24 horas. Função: WEIB (0.00865, 5.69) por segundo. Função: NORM(0.0178, 0.00185) por segundo. Função: NORM (0.024, 0.00401) por segundo. P4 Processo: Processamento e entrega da Requisição pelo 1º cliente ZOPE Função: 0.05 + 0.06 * BETA (5.7, 4.54) por segundo. P5 Processo: Processamento e entrega da Requisição pelo 2º cliente ZOPE Função: 0.05 + 0.06 * BETA (5.7, 4.54) por segundo. P6 Processo: Processamento e entrega da Requisição pelo 3º cliente ZOPE Função: 0.05 + 0.06 * BETA(5.7, 4.54) por segundo. R1 Recurso: Apache R2 Recurso: Varnish R3 Recurso: Pound R4 Recurso: Cliente Zope 1 R5 Recurso: Cliente Zope 2 R6 Recurso: Cliente Zope 3 3. Descrição do modelo de simulação O modelo de simulação proposto neste trabalho foi elaborado segundo a metodologia de Freitas Filho (2008), em que foram seguidos os seguintes passos: formulação de análise do problema, planejamento do projeto, formulação do modelo conceitual, coleta de macroinformações e dados, tradução do modelo, verificação e validação, projeto experimental final, experimentação, interpretação e análise estatística dos resultados, comparação e identificação das melhores soluções, documentação e apresentação dos resultados. O modelo foi construído considerando um período de tempo preestabelecido para o início e término das operações, caracterizando, assim, o modelo como de um sistema terminal. É importante ressaltar que, de acordo com Banks (2010), o modelo concebido neste trabalho pode ser classificado tanto como um modelo voltado para a previsão quanto um modelo específico, pois é usado para prever seu comportamento atual e como continuará se comportando ao longo do tempo, podendo-se variar o fluxo de entrada e também ser usado para decidir sobre qual o poder de processamento necessário a um servidor, de acordo com diferentes tipos de cargas no sistema. Entretanto, a segunda classificação não será abordada neste trabalho. O tipo de teste realizado na simulação computacional é citado em Sargent (2010) como Testes de Degenerescência ou Robustez, ou seja, nesses testes a verificação do modelo é feita aplicando-se sobre os parâmetros valores extremos. O parâmetro de entrada do modelo (chegadas) são requisições que são enviadas ao servidor web. As requisições chegam com uma frequência que segue uma distribuição que pode ser vista no modelo IDEF-SIM, presente no trabalho, que representa a quantidade de usuários por segundo que acessam o servidor de alguma forma, e essa frequência de chegadas foi alterada de acordo com os diferentes cenários simulados. O modelo conceitual proposto neste trabalho foi traduzido para o software Arena 12 versão acadêmica para a realização das simulações computacionais. As simulações apenas foram iniciadas após o modelo ter sido verificado e validado por completo e garantido que os pressupostos e as simplificações adotadas do sistema real estavam corretamente implementadas no modelo computacional. 251
Tiago de Azevedo Santos e João José de Assis Rangel 4. Projeto experimental e análise dos resultados A abordagem utilizada nas simulações computacionais foi seguida, a fim de se poder analisar uma sobrecarga no servidor. Isso foi feito alterando-se um dos fatores do problema, a quantidade de requisições que chegam ao servidor. A ideia é iniciar os experimentos com a configuração típica, ou seja, a mesma utilizada na validação do modelo e depois incrementar a quantidade de chegadas, realizando-se essa rotina nove vezes, gerando um total de 10 cenários. A cada incremento feito na quantidade de chegadas, o lead time da requisição, é analisado. É importante ressaltar que os incrementos realizados na quantidade de chegadas são sempre 100% do valor inicial (Nível 1), ou seja, o Nível 2 tem valor de 100% a mais do que o Nível 1, o Nível 3 tem valor de 200% a mais do que o Nível 1, e assim sucessivamente. O modelo foi preparado para rodar em um período de um dia útil, contando um às 24 h, e cada cenário foi replicado 10 vezes, a fim de obter uma convergência dos resultados. Os cenários, assim como os resultados com as simulações computacionais, podem ser vistos na Tabela 2. Tabela 2 Resultados obtidos através da simulação computacional Cenários Chegada de requisições Lead time Varnish Lead time clientes Zope Total de requisições atendidas 1 Nível 1 0,03 segundo 0,13 segundo 321281 2 Nível 2 0,03 segundo 0,14 segundo 642413 3 Nível 3 0,03 segundo 0,14 segundo 963314 4 Nível 4 0,03 segundo 0,14 segundo 1284446 5 Nível 5 0,03 segundo 0,15 segundo 1605948 6 Nível 6 0,03 segundo 0,16 segundo 1927210 7 Nível 7 0,03 segundo 0,17 segundo 2248100 8 Nível 8 0,03 segundo 0,18 segundo 2569362 9 Nível 9 0,03 segundo 0,20 segundos 2890765 10 Nível 10 0,03 segundo 0,22 segundo 3211059 De acordo com a Tabela 1, é possível notar que, à medida que as requisições aumentam o lead time do Varnish, permanece o mesmo valor, e o contrário acontece com o lead time dos clientes Zope, que obteve aumento de até 69,23%, no Nível 10. Isso se dá pelo fato de que o Processo Varnish consegue responder a mais requisições que os processos dos Clientes Zope. Ou seja, se continuarmos aumentando o valor de entrada de requisições, provavelmente os processos dos Clientes Zope serão o primeiro gargalo do modelo analisado. Isso pode ser visualizado na Tabela 3, que mostra a taxa de utilização dos recursos de acordo com os cenários simulados. Tabela 3 - Taxa de utilização dos recursos Cenários Recurso Apache (%) Recurso Varnish (%) Recurso Pound (%) Recurso clientes Zope (%) 1 3 7 6 8 2 6 14 12 15 3 9 20 18 22 4 12 26 25 28 5 15 32 30 34 6 18 39 35 41 7 21 47 42 50 8 24 53 47 55 9 27 60 54 64 10 30 66 62 73 252
Modelo de simulação de um processo de requisições em um servidor web de alta disponibilidade Os valores referentes à quantidade de requisições atendidas nos diferentes cenários simulados podem ser mais bem visualizados na Figura 4. Figura 4 - Gráfico das requisições atendidas em relação aos cenários. Na Figura 5 é possível visualizar os valores do lead time do Varnish e do cliente Zope em relação aos cenários simulados. Tempo (Segundos) Requisições 0,25 0,2 0,15 0,1 0,05 0 3500000 3000000 2500000 2000000 1500000 1000000 500000 Figura 5 - Relação dos lead times em relação aos cenários. 5. Conclusões 0 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 Níveis Níveis Lead time Clientes Zope Total de Requisições Atendidas O modelo de simulação proposto neste trabalho abordou as operações realizadas no processo de requisições realizadas a um servidor web de alta disponibilidade e permitiu analisar o impacto da quantidade de requisições no lead time de entregas destas aos clientes. Também, foi possível analisar um processo de sobrecarga no sistema que compõe o servidor. O modelo também incluiu em sua elaboração, além do cálculo do lead time de entrega das requisições solicitadas, a taxa de utilização dos Tempo (Segundos) 0,04 0,03 0,03 0,02 0,02 0,01 0,01 0 1 2 3 4 5 6 7 8 9 10 Níveis Lead time Varnish recursos presentes no modelo. Os resultados da simulação indicaram que, no atual cenário, o servidor web analisado para a elaboração do modelo de simulação está sendo utilizado abaixo do que ele realmente pode suportar. Também foi possível verificar que, mesmo com aumento na quantidade na chegada de requisições de 900%, o servidor não obteve taxa de ocupação de sobrecarga em nenhum dos recursos computacionais simulados. Isso levando-se em conta que a sobrecarga é atribuída quando um recurso adquire 90% ou mais na taxa de utilização. O modelo de simulação apresentou alternativa para estudos estratégicos que podem ser utilizados antes da elaboração física em um servidor web. Nesse sentido, o uso da simulação permite que algumas alternativas em termos de hardware e software sejam testadas antes de sua implementação real, diminuindo custos e verificando possíveis dificuldades. De acordo com os resultados, é possível perceber que existe relação de proporcionalidade entre a quantidade de chegada de requisições e o valor do lead time destas. Também, é possível prever que, se o incremento ocorrer na função de chegada de requisições, provavelmente os processos dos Clientes Zope serão os primeiros gargalos do modelo analisado. 6. Agradecimentos Ao Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq), à Fundação de Amparo à Pesquisa do Estado do Rio de Janeiro (FAPERJ) e à Fundação de Amparo à Pesquisa do Estado de Minas Gerais (FAPEMIG), pelo suporte financeiro a esta pesquisa. 7. Referências BANKS, J.; CARSON, J. S.; NELSON, B. L.; NICOL, D. M. Discrete-event system simulation. 5nd ed. New Jersey: Prentice Hall, 2010. FREITAS FILHO, P. J. de. Introdução à modelagem e simulação de sistemas: com aplicações em arena. 2. ed. Florianópolis: Visual Books, 2008. MONTEVECHI, J. A. B.; LEAL, F.; PINHO, A. F.; COSTA, R. F. S; OLIVEIRA, M. L. M.; SILVA, A. 253
Tiago de Azevedo Santos e João José de Assis Rangel L. F. Conceptual modeling in simulation projects by mean adapted IDEF: An application in a Brazilian tech company. In: WINTER SIMULATION CONFERENCE, 2010, Baltimore. Proceedings Baltimore, 2010. p. 1624-1635. SARGENT, R. G. Verification and validation of simulation models. In: WINTER SIMULATION CONFERENCE, 2010, Baltimore. Proceedings Baltimore, 2010. p. 166-183. VASILIOU, N.; LUTFIYYA, H. Providing a differentiated quality of service in a world wide web server. SIGMETRICS Perform. Eval. Rev., v. 28, n. 2, p. 22-28, 2000. Artigo selecionado entre os 10 melhores do VI Encontro Mineiro de Engenharia de Produção - EMEPRO 2010. 254