você está aqui: Home  → Arquivo de Mensagens

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.

Cesar Brod ministra cursos in-house adequados à necessidade de sua empresa, além de atuar como coach de equipes ágeis. Visite nosso portal para saber mais ou entre em contato diretamente com o autor para mais informações.



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

 

 

Opinião dos Leitores

Mateus
29 Mar 2013, 06:36
PAra windows:
http://www.coretechnologies.com/products/http-ping/
Renato
28 Mar 2013, 11:36
"Aos usuários de Windows é bem simples, é só trocar de sistema operacional primeiro."
Pra que um "usuário", principalmente do Windows, vai querer esse recurso?
Alesander
28 Mar 2013, 10:18
Parabéns Cesar, essa ferramenta auxiliará muito no diagnóstico de problemas em servidores de aplicação. Só uma pequena observação, existem versões para Windows (tive que buscar para o caso de precisar). Exemplos: http://www.elifulkerson.com/projects/httping.php e
http://rtfreesoft.blogspot.com.br/2010/03/httping-141-win32.html

Abraços.
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script