De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

httping - um "ping", só que para http!

Colaboração: Cesar Brod

Data de Publicação: 28 de março de 2013

O ping é um utilitário pequeno e útil para testar a existência de uma conexão entre máquinas, reportando dados sobre o tempo de ida e volta dos pacotes de dados e indicando se os mesmos estão se perdendo pelo caminho. Abaixo, um exemplo de ping entre a minha máquina e o servidor do Dicas-L:

$ ping www.dicas-l.com.br
PING www.dicas-l.com.br (173.212.215.234) 56(84) bytes of data.
64 bytes from www.dicas-l.com.br (173.212.215.234): icmp_req=1 ttl=42 time=186 ms
64 bytes from www.dicas-l.com.br (173.212.215.234): icmp_req=2 ttl=42 time=192 ms
64 bytes from www.dicas-l.com.br (173.212.215.234): icmp_req=3 ttl=42 time=186 ms
64 bytes from www.dicas-l.com.br (173.212.215.234): icmp_req=4 ttl=42 time=186 ms
64 bytes from www.dicas-l.com.br (173.212.215.234): icmp_req=5 ttl=42 time=273 ms
64 bytes from www.dicas-l.com.br (173.212.215.234): icmp_req=8 ttl=42 time=193 ms
64 bytes from www.dicas-l.com.br (173.212.215.234): icmp_req=9 ttl=42 time=193 ms
^C
—- www.dicas-l.com.br ping statistics ---
9 packets transmitted, 7 received, 22% packet loss, time 8021ms
rtt min/avg/max/mdev = 186.261/201.754/273.533/29.463 ms

O comando é terminado pressionando-se, simultaneamente, as teclas Ctrl e C, quando ele, então, gera as estatísticas finais. Notem que nove pacotes foram transmitidos, mas apenas sete chegaram a seu destino (perda de 22%). O tempo de viagem de cada pacote oscilou entre 186 e 273 milissegundos. Você tem mais informações sobre o comando ping em sua página de manual:

 man ping

O ping está presente (até onde eu sei!) em todos os sistemas operacionais derivados do Unix (como o Linux, *BSD, MacOS, Android) e até no Windows. O httping precisa ser instalado. Para quem é usuário de distribuições baseadas no Debian (Linux Mint, Ubuntu e outras), o processo é simples:

 sudo apt-get install httping

No FreeBSD também é fácil:

$ cd /usr/ports/net/httping
$ make install

No Android, é só procurar pelo aplicativo no Google Play. Os usuários de outros sistemas devem acessar a página do projeto e verificar como fazer a sua instalação. Aos usuários de Windows é bem simples, é só trocar de sistema operacional primeiro.

$ httping http://www.dicas-l.com.br
PING www.dicas-l.com.br:80 (http://www.dicas-l.com.br):
connected to www.dicas-l.com.br:80, seq=0 time=549.09 ms 
connected to www.dicas-l.com.br:80, seq=1 time=547.69 ms 
connected to www.dicas-l.com.br:80, seq=2 time=614.83 ms 
connected to www.dicas-l.com.br:80, seq=3 time=560.66 ms 
connected to www.dicas-l.com.br:80, seq=4 time=616.99 ms 
^C--- http://www.dicas-l.com.br ping statistics ---
5 connects, 5 ok, 0.00% failed
round-trip min/avg/max = 547.7/577.9/617.0 ms

Para terminar e obter as estatísticas, como no ping, é só clicar Ctrl e C simultaneamente. Veja que, no caso do servidor do Dicas-L, o tempo de viagem de um pacote http oscilou entre 547 e 617 milissegundos.

Mas isso serve para o quê mesmo? No meu caso, basicamente para a depuração de servidores http. Ao contrário do ping, que trata de uma resposta pura e simples de rede, para que um pedido http seja processado, o servidor http tem que fazer o seu trabalho. Como a resposta do comando é muito simples, por exemplo, eu posso fazer pequenas modificações em arquivos de configuração como o apache2.conf e ver como isso afeta, imediatamente, os tempos de resposta de meu servidor web. Aos que servem também aplicações na melhor linguagem do mundo, alterações no arquivo php.ini também podem afetar os resultados do httping e, por consequência, o desempenho do servidor web.

Outro uso é comparar os resultados obtidos em serviços de hospedagem web (claro, isso serve para ter algumas métricas, mas não é totalmente conclusivo por si só). Mas peguemos um exemplo bem controlado. Tenho o domínio da BrodTec hospedado através de um serviço da Locaweb e estou considerando contratar um novo serviço, em ambiente de Cloud, da mesma empresa. Como já tenho o serviço de Cloud contratado para outros servidores que administro, usando exatamente a mesma estrutura do site de minha empresa (Linux, apache, php, drupal), posso fazer o teste:

$ httping http://brodtec.com
PING brodtec.com:80 (http://brodtec.com):
connected to brodtec.com:80, seq=0 time=2969.01 ms 
connected to brodtec.com:80, seq=1 time=4074.59 ms 
connected to brodtec.com:80, seq=2 time=3251.73 ms 
connected to brodtec.com:80, seq=3 time=2623.24 ms 
connected to brodtec.com:80, seq=4 time=3042.32 ms 
connected to brodtec.com:80, seq=5 time=2296.77 ms 
^C--- http://brodtec.com ping statistics ---
6 connects, 6 ok, 0.00% failed
round-trip min/avg/max = 2296.8/3042.9/4074.6 ms

A primeira coisa que já noto, é que o tempo de resposta de meu servidor já é bem maior do que o do Dicas-L. Isto não me assusta tanto, já que o Dicas-L é um portal de muito acesso e, portanto, tem que estar mesmo em um servidor melhor e mais rápido. Mas agora, fazendo o teste em um domínio que tenho no Cloud, estrutura que penso em contratar para o portal de nossa empresa:

$ httping http://mundolinux.com.br
PING mundolinux.com.br:80 (http://mundolinux.com.br):
connected to mundolinux.com.br:80, seq=0 time=791.65 ms 
connected to mundolinux.com.br:80, seq=1 time=769.36 ms 
connected to mundolinux.com.br:80, seq=2 time=1168.69 ms 
connected to mundolinux.com.br:80, seq=3 time=977.80 ms 
connected to mundolinux.com.br:80, seq=4 time=1076.32 ms 
connected to mundolinux.com.br:80, seq=5 time=979.75 ms 
^C--- http://mundolinux.com.br ping statistics ---
6 connects, 6 ok, 0.00% failed
round-trip min/avg/max = 769.4/960.6/1168.7 ms

O tempo médio de acesso caiu em um terço, comparado com a estrutura de hospedagem de nosso site atual.

Outra coisa que gosto de fazer é eliminar qualquer interferência de rede quando estou testando o desempenho (e fazendo ajustes para a sua melhora) de meus servidores web. Para isso, rodo o httping na própria máquina onde tenho meu servidor web e uso httping localhost. Também costumo editar o arquivo /etc/hosts para que não seja feita uma busca DNS para os servidores web hospedados na própria máquina.

O comando man httping, assim como a página do projeto lhe darão mais informações de uso do mesmo.

O httping é um dos comandos que Cesar Brod leva em sua manga quando ministra oficinas de desempenho em servidores web com o Drupal.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Cesar Brod