Siege HTTP Benchmark

Recentemente pesquisando sobre balanceamento de carga e também como melhorar performance do nginx, esbarrei com uma ferramenta simples e ao mesmo tempo muito útil. Para exemplificar melhor a situação vamos considerar uma instancia com 1GB de RAM, 2 CPUs e um Debian8, calma, não se prenda muito nesses valores.

Primeiro passo foi entender o que poderia fazer a diferença no nginx.conf. Encontrei duas opções logo no inicio que chamaram muito atenção: worker_processes e worker_connections. Na documentação oficial do nginx existe uma recomendação de preencher o worker_processes com total de CPUs e no worker_connections o valor obtido através do resultado do comando: ulimit -n.

Obs: Total de cpu pode ser obtido através do comando:
cat /proc/cpuinfo |grep -i processor |wc -l 

Próximo passo foi encontrar uma ferramenta que fosse capaz de realizar um teste de performance, algo semelhante ao que o AB faz com o Apache. Afinal de contas, será que os valores indicados estão sendo levados em consideração? Foi nesse momento que encontrei o Siege, uma excelente opção capaz de realizar esse teste. 

Instalação é muito fácil, está disponível no repositório brew(osx) e também no repositório do Ubuntu. Hmm, putz! estamos usando Debian não é mesmo? Falei para não se prender naqueles valores, hehehe. Pois bem, adicione um repositório ai:
vim /etc/apt/sources.list
deb http://ftp.de.debian.org/debian sid main

Existem muitas opções disponíveis para que possamos estressar nosso webserver através do Siege. Recomendo muito a leitura da documentação. Devido a limitação do meu ambiente virtual, montei esse post considerando apenas duas: -t(tempo de execução) e -c(numero de conexões). Sintaxe ficou assim:
siege -t10s -c800 https://IP_DO_SEU_WEB_SERVER
Ao termino da execução do siege, vamos ter acesso a um relatório semelhante ao da imagem abaixo, onde é possível observar o tempo médio de execução, total de dados transferidos, tempo médio de resposta por usuário...

O post chega ao fim não porque esgotamos todas as possibilidades, longe disso, o nginx possibilita uma gamma muito maior de opções a serem alteradas quando o assunto é performance. Foco foi apenas em apresentar uma boa ferramenta para estressar seu webserver dentro da limitação do meu ambiente de testes.

0 comentários: