quarta-feira, 16 de setembro de 2015

Testando o desempenho da web com httping

O httping testa a conexão com uma aplicação e mostra o tempo de resposta. Semelhante ao ping, mas ele testa a aplicação e não somente a resposta da interface de rede.

Para entermos melhor, vamos analisar o tempo de resposta do servidor que hospeda o site do Google.

$ ping -c 4 www.google.com
PING www.google.com (173.194.118.52) 56(84) bytes of data.
64 bytes from gru06s10-in-f20.1e100.net (173.194.118.52): icmp_seq=1 ttl=58 time=5.62 ms
64 bytes from gru06s10-in-f20.1e100.net (173.194.118.52): icmp_seq=2 ttl=58 time=7.64 ms
64 bytes from gru06s10-in-f20.1e100.net (173.194.118.52): icmp_seq=3 ttl=58 time=13.5 ms
64 bytes from gru06s10-in-f20.1e100.net (173.194.118.52): icmp_seq=4 ttl=58 time=10.0 ms

--- www.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 5.625/9.207/13.562/2.952 ms

O tempo médio é de 9,2 milésimos de segundo. Agora vamos testar o tempo de resposta do site do Google.

$ httping -c 4 www.google.com
PING www.google.com:80 (www.google.com):
connected to 173.194.118.51:80 (238 bytes), seq=0 time=28.48 ms
connected to 173.194.118.49:80 (238 bytes), seq=1 time=24.45 ms
connected to 173.194.118.48:80 (238 bytes), seq=2 time=17.44 ms
connected to 173.194.118.52:80 (238 bytes), seq=3 time=11.69 ms
--- www.google.com ping statistics ---
4 connects, 4 ok, 0.00% failed, time 3083ms
round-trip min/avg/max = 11.7/20.5/28.5 ms

Reparem que vários IP respondem à solicitação. Isso porque o site do Google não está hospedado em um único servidor. O tempo médio de resposta foi de 21 milisegundos, mas que o dobro do valor mostrado no ping. Isso porque a requisição do httping exige um processamento pela aplicação, o que o ping não exige.

Outro exemplo, vamos comparar o tempo de resposta do site do Google quando acessado por IPv4 e IPv6.

$ httping -c 4  www.google.com
PING www.google.com:80 (www.google.com):
connected to 173.194.118.48:80 (238 bytes), seq=0 time=15.41 ms
connected to 173.194.118.52:80 (238 bytes), seq=1 time=11.78 ms
connected to 173.194.118.50:80 (238 bytes), seq=2 time=12.96 ms
connected to 173.194.118.49:80 (238 bytes), seq=3 time=25.78 ms
--- www.google.com ping statistics ---
4 connects, 4 ok, 0.00% failed, time 3066ms
round-trip min/avg/max = 11.8/16.5/25.8 ms

$ httping -6 -c 4  www.google.com
PING www.google.com:80 (www.google.com):
connected to 2800:3f0:4001:811::1014:80 (788 bytes), seq=0 time=578.46 ms
connected to 2800:3f0:4001:811::1014:80 (788 bytes), seq=1 time=586.94 ms
connected to 2800:3f0:4001:811::1014:80 (788 bytes), seq=2 time=556.28 ms
connected to 2800:3f0:4001:811::1014:80 (788 bytes), seq=3 time=546.82 ms
--- www.google.com ping statistics ---
4 connects, 4 ok, 0.00% failed, time 5269ms
round-trip min/avg/max = 546.8/567.1/586.9 ms

O IPv4 respondeu a uma média de 17 milisegundo, enquanto o tempo médio do IPv6 foi de 570 milisegundos. Isso não significa que o IPv6 é mais lento. Isso pode ser causado por dois fatores:


  1. Estou usando IPv6 através de um túnel 6to4, o que prejudica o desempenho;
  2. As requisições IPv4 passam por um proxy que faz cache, e isso aumenta o desempenho.


Em todo caso, o httping pode ser uma ótima ferramenta para fazer análises de rede e de aplicações servidoras e pode ser instalado com o apt-get.

# apt-get install httping