Usando o AB - ApacheBench para teste de Desempenho e Stress

Felipo Antonoff
Postado em 31 de janeiro de 2016
Editado um ano atrás

Sempre usamos ferramentas OpenSource ou Pagas para otimizar nosso tempo, ferramentas como os famosos CMS (Wordpress, Joomla, Drupal...), E-Commerce (Opencart, Prestashop, Magento, WooCommerce..) e muitos outros como ERP, CRM e Help Desk.Porém, poucos observam o comportamento dessas ferramentas ou sistemas desenvolvidos, a maioria dos casos é analisado apenas os recursos, o mesmo para servidores como Apache 2 e o Nginx que venho para aguentar várias requisições simultâneas em nossos sites e sistemas.

Por isso nesse artigo, vamos ensinar o uso da ferramenta muito conhecida por profissionais de TI, o ApacheBench também conhecido como AB ou Apache HTTP server benchmarking tool.O que é esse tal de ab ou ApacheBench ou AB?"ab é uma ferramenta de benchmarking de seu servidor Apache Hypertext Transfer Protocol ( HTTP). Ele é projetado para lhe dar uma impressão de como sua instalação atual Apache executa . Esta especialmente mostra quantas solicitações por segundo sua instalação Apache é capaz de servir ."Bom essa é a definição do site oficial, em resumo, é uma ferramenta de Benchmarking que trabalha sobre o protocolo HTTP, o mesmo usado por nossos sites e aplicativos online. Na definição oficial foca em medir o desempenho do servidor Apache, porém serve para medir o desempenho de qualquer servidor e vai além, servindo para testar qualquer site ou sistema que trabalha no protocolo HTTP, porém tem que levar em conta que testar por exemplo CMS em diferentes servidores, vai gerar resultados diferentes.

Para um teste mais realista como deve ser feito?Para um teste mais realista possível, devemos sempre testar nas mesmas condições, por exemplo quer comparar o desempenho do seu sistema de CMS em relação a famosos CMS, como o Wordpress, então tem que ser instalado ambos na mesma máquina e nas mesmas condições cache, gzip e quantidade próxima de artigos e conteúdo.Caso instale em locais diferentes, vai ter resultados imprecisos, já que o servidor usado, vai refletir no desempenho direto que terão, por esse motivo também não é muito bom testar em servidor compartilhado, já que o uso de recursos é variado.Logo outro fator é evitar o teste em máquinas com outros sites que tenham muito acesso, pois podem estar consumindo já parte dos recursos do Servidor e Banco de Dados, diminuindo o resultado do teste final. Se puder use um VPS apenas para testes ou dedicado.

Bom, vamos ao que interesse, como instalar o AB no Ubuntu/Debian?Vamos usar o Ubuntu, por ser a distribuição Linux mais famosa e muito usada por profissionais de TI e em servidores, podendo ser instalado até mesmo no seu VPS, testando dentro dele mesmo ou em sua máquina local.Abra o terminal e depois digite o seguinte comando: sudo apt-get updatesudo apt-get install apache2-utilsO primeiro vai atualizar os dados e o segundo instalar o AB.Certo, legal tudo instalado, vamos agora brincar com eleNo terminal aberto, use o seguinte comando: ab -n 100 -c 100  -k seusite.com.br/Pronto, só isso para testar, vamos agora explicar um pouco essa mini configuração.

O ab serve para iniciar o teste usando o ab.O -n 100, onde o 100 pode ser qualquer número inteiro maior que o número do -c. ou igual Representa o número de requisições, no caso acima 100 requisiçõesO -c 100, onde o 100 pode ser qualquer número inteiro menor que o -n ou igual. Representa o número de requisições simultâneas, ou seja, ao mesmo tempo, simulando por exemplo o número de usuários.Podemos também saber o número de hits ou requisições feita por usuários, vamos simular abaixo isso um pouco.O -k, ativa o HTTP KeepAlive, isto é, realizar várias solicitações no prazo de uma sessão HTTP. O padrão é não KeepAlive. Se preferir não precisa usar o -k, é opcional.

Observação: Tem que usar sempre no final do endereço a barrinha / , para ser uma requisição válida, caso contrário vai ser considerado uma URL inválida, já se for arquivo, pode informar completo sem o / .Também use sempre a URL final, por exemplo se seu site ao entrar por seusite.com.br é direcionado para www.seusite.com.br, use então o seusite.com.br que é a URL final do redirecionamento e vice versa. Pois o AB não segue redirecionamentos, logo o teste sairia errado e muito melhor que o esperado, pois não estaria sendo feito  teste no site e sim carregado o redirecionamento.Informação sugerida pelo colega Renato Frota do Grupo Desenvolvimento Web, principalmente a parte do redirecionamento e corrigido a palavra consecutivas para simultâneas.

Teste no Google: ab -n 10000 -c 50  -k google.com.br/10 mil requisições e 50 usuários, 200 requisições por usuário, o que é um pouco absurdo, mas a ideia do teste é exatamente essa, ver os limites, claro que para um bom teste deve verificar o que quer testar e de acordo com a necessidade prevista para o seu site.

Você quer simular, um acesso com 10 usuários usando ao mesmo tempo seu site ou o mais próximo disso e cada um visitou 20 páginas ou fez 20 requisições ao seu site.Então a configuração seria:-n = 200, pois 200/10 = 20 requisições por usuário-c = 10ab -n 200 -c 10  -k seusite.com.br/Se fosse 100 requisições por usuário, o que seria um pouco absurdoab -n 1000 -c 10  -k seusite.com.br/
Para um bom teste, use um bom número de requisições e usuários, para saber realmente o limite de seu servidor e sistema.O AB é muito simples de usar e é uma ferramenta valiosa para testes, infelizmente a área de TI, contém todo tipo de profissional e sistemas, que muitas vezes esquecem que o desempenho é um fator importante de qualquer projeto ou site, por isso sempre é bom poder fazer testes e comparar diferentes soluções ou pelo menos ter uma ideia de quanto seu sistema aguenta, para ver se atende a demanda e o que pode ser otimizado no seu servidor e sistema.Para ver todos os comandos, digite no terminal ab -help .Observação: Ele não vai testar todos as requisições do seu site, ou seja, imagens, css e js, apenas a requisição que converte da linguagem usada (PHP, Java, Node.js...) para o HTML, ou seja, a parte do sistema em si.Logo ele não serve para ver quanto seu site leva para carregar no geral, para isso tem ferramentas manuais que já ajudam e muito como o Inspecionar do Chrome e Firefox e o Jmeter para teste de Desempenho e Stress geral, que iremos abordar também.Em todo caso, se quiser testar a requisição das imagens por exemplo, só por no comando dele o endereço da imagem, exemplo seusite.com.br/image/nome.jpg.Exemplo bom para testar CDN e outro excelente uso do AB é para ver se compensou a troca de hospedagem ou até mesmo testar antes de trocar o site de hospedagem, afinal desempenho também é dinheiro para E-commerce, alguns ms ou segundos a mais, está perdendo dinheiro e possíveis clientes.Não abordamos a instalação no Windows ou Mac, pois temos como foco sempre o uso de soluções OpenSource e por isso usamos e indicamos o uso do Ubuntu e a maioria dos servidores usam Linux, podendo ser testado nele. No Google deve encontrar como instalar em outros sistemas.No próximo artigo, irei explicar sobre o uso do Gnuplot, para gerar gráficos dos testes feitos no ApacheBench.