Medindo o tempo de resposta de cada step de API/SITE no terminal

Publicado por Leonardo Berbert Gomes em 16/07/2020

[ Hits: 4.273 ]

Blog: https://www.linkedin.com/in/leoberbert

 


Medindo o tempo de resposta de cada step de API/SITE no terminal



Quem nunca precisou medir o tempo de resposta de uma API ou SITE em cada step? Nesta dica vamos aprender como fazer isso de uma forma bem simples utilizando o comando curl.

Na linha de comando abaixo eu também utilizei a linguagem Perl para exibir o momento em que a consulta é realizada:

curl -L -o /dev/null -s -w " time_namelookup: %{time_namelookup}\n time_connect: %{time_connect}\n time_pretransfer: %{time_pretransfer}\n time_redirect: %{time_redirect}\n time_starttransfer: %{time_starttransfer}\n time_total: %{time_total}\n" http://www.terra.com.br | perl -pe 'use POSIX strftime; print strftime "%d/%m/%Y %H:%M:%S;", localtime'

16/07/2020 10:07:27; time_namelookup: 0,000001
16/07/2020 10:07:27; time_connect: 0,188000
16/07/2020 10:07:27; time_pretransfer: 0,750000
16/07/2020 10:07:27; time_redirect: 0,625000
16/07/2020 10:07:27; time_starttransfer: 1,422000
16/07/2020 10:07:27; time_total: 2,047000


Abaixo um descritivo do que cada campo representa:
  • time_namelookup - Tempo em segundos desde o início da transação até a resolução do nome ser concluída.
  • time_connect - Tempo em segundos desde o início da transação até a conexão TCP com o host ser concluída.
  • time_pretransfer - Tempo em segundos desde o início da transação até a transferência do arquivo começar.
  • time_redirect - Tempo em segundos para todas as etapas de redirecionamento.
  • time_starttransfer - Tempo em segundos desde o início da transação até a transferência do primeiro byte.
  • time_total - Tempo total em segundos que durou toda a operação.

Suponhamos que eu precise deixar o comando acima rodando de x em x tempo para ficar coletando diariamente para identificar algum momento de gargalo em meu SITE ou API. Eu poderia fazer um simples shell script para isso, conforme mostrado abaixo:

#!/bin/bash

while true ;
do
date=$(date '+%Y-%m-%d')
curl -L -o /dev/null -s -w " time_namelookup: %{time_namelookup}\n time_connect: %{time_connect}\n time_pretransfer: %{time_pretransfer}\n time_redirect: %{time_redirect}\n time_starttransfer: %{time_starttransfer}\n time_total: %{time_total}\n" http://www.terra.com.br | perl -pe 'use POSIX strftime; print strftime "%d/%m/%Y %H:%M:%S;", localtime' >> metrica_resp_site_$date.log
sleep 3
done

O simples script acima ficará coletando a cada 3 segundos e gravará a informação no arquivo "metrica_resp_site_2020-07-16.log".

Espero que essa dica seja útil.

[]'s leoberbert

Outras dicas deste autor

Configurando o GitHub em 2 minutos

Trabalhando com JSON no terminal? O jq salva você!

Adicionando novas opções ao menu do Fluxbox

kind - Desenvolvimento Local com Kubernetes

Atualizando / Instalando o VIM 8.2 (Ubuntu/Debian/Mint e Derivados)

Leitura recomendada

Manjaro - Escolher mirrors brasileiros com o pacman

auto-apt - Erro: "dpkg warning obsolete option --print-installation-architecture" [Resolvido]

Como obter explicação "mastigada" de seus comandos shell

id - Identificadores do usuário

Entendendo o comando scp

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts