A partir desta publicação brilhante no blog ... https://blog.josephscott.org/2011/10/14/timing-details-with-curl/
O cURL suporta saída formatada para os detalhes da solicitação (consulte a página de manual do cURL para detalhes , em -w, –write-out <format>
). Para nossos propósitos, focaremos apenas nos detalhes de tempo fornecidos. Os tempos abaixo estão em segundos .
Crie um novo arquivo, curl-format.txt, e cole em:
time_namelookup: %{time_namelookup}s\n
time_connect: %{time_connect}s\n
time_appconnect: %{time_appconnect}s\n
time_pretransfer: %{time_pretransfer}s\n
time_redirect: %{time_redirect}s\n
time_starttransfer: %{time_starttransfer}s\n
----------\n
time_total: %{time_total}s\n
Faça um pedido:
curl -w "@curl-format.txt" -o /dev/null -s "http://wordpress.com/"
Ou no Windows, é ...
curl -w "@curl-format.txt" -o NUL -s "http://wordpress.com/"
O que isso faz:
-w "@curl-format.txt"
diz ao cURL para usar nosso arquivo de formato
-o /dev/null
redireciona a saída da solicitação para / dev / null,
-s
diz ao cURL para não mostrar que um medidor de progresso
"http://wordpress.com/"
é a URL que estamos solicitando. Use aspas, principalmente se o seu URL tiver parâmetros de string de consulta "&"
E aqui está o que você recebe de volta:
time_namelookup: 0.001s
time_connect: 0.037s
time_appconnect: 0.000s
time_pretransfer: 0.037s
time_redirect: 0.000s
time_starttransfer: 0.092s
----------
time_total: 0.164s
Criar um atalho para Linux / Mac (alias)
alias curltime="curl -w \"@$HOME/.curl-format.txt\" -o NUL -s "
Então você pode simplesmente ligar ...
curltime wordpress.org
Obrigado ao comentarista Pete Doyle!
Crie um script independente do Linux / Mac
Este script não requer um arquivo .txt separado para conter a formatação.
Crie um novo arquivo, curltime, em algum lugar do seu caminho executável e cole:
#!/bin/bash
curl -w @- -o /dev/null -s "$@" <<'EOF'
time_namelookup: %{time_namelookup}\n
time_connect: %{time_connect}\n
time_appconnect: %{time_appconnect}\n
time_pretransfer: %{time_pretransfer}\n
time_redirect: %{time_redirect}\n
time_starttransfer: %{time_starttransfer}\n
----------\n
time_total: %{time_total}\n
EOF
Chame da mesma maneira que o alias:
curltime wordpress.org
Crie um atalho do Windows (também conhecido como arquivo BAT)
Coloque este comando em CURLTIME.BAT (na mesma pasta que curl.exe)
curl -w "@%~dp0curl-format.txt" -o NUL -s %*
Então você pode simplesmente ligar ...
curltime wordpress.org
\n
para quebrar a linha no arquivo de texto@curl -w "@%~dp0curl-format.txt" -o NUL -s %*
Grande respostaalias curltime="curl -w \"@$HOME/.curl-format.txt\" -o NUL -s "
. Provavelmente também funciona no MacOS.Aqui está a resposta:
Todas as variáveis usadas com
-w
podem ser encontradas emman curl
.fonte
"\n%{time_connect}:%{time_starttransfer}:%{time_total}\n"
-sS
).Opção 1. Para medir
total time
:Saída de amostra:
Opção 2. Para chegar
time to establish connection
,TTFB: time to first byte
etotal time
:Saída de amostra:
Ref: obtenha tempo de resposta com curl
fonte
Um atalho que você pode adicionar ao seu .bashrc etc, com base em outras respostas aqui:
Uso:
fonte
curl -o /dev/null -s -w "time_total: %{time_total} sec\nsize_download: %{size_download} bytes\n" https://www.google.com
O seguinte é inspirado na resposta de Simon. É independente (não requer um arquivo de formato separado), o que o torna ótimo para inclusão no
.bashrc
.Além disso, deve funcionar com todos os argumentos que
curl
normalmente levam, já que os"$@"
justos os passam. Por exemplo, você pode fazer:Resultado:
fonte
Se você deseja analisar ou resumir a latência, tente o banco apache:
Por exemplo:
Ele mostrará:
fonte
ab
aceita com facilidade muitas das mesmas bandeiras que,curl
por exemplo,-H
para cabeçalhos. Eu usei esse comando para comparar os tempos de resposta de uma API de terceiros (fornecendo o token do portador em um cabeçalho de autorização). Trabalhou brilhantemente.Outra maneira é configurar
~/.curlrc
assimEntão a saída de
curl
éfonte
Ei, é melhor que o Apache Bench, tem menos problemas com SSL
Referências
fonte
Outra opção que talvez seja a mais simples em termos de linha de comando é adicionar a
--trace-time
opção interna:Mesmo que tecnicamente não produza os tempos das várias etapas, conforme solicitado pelo OP, ele exibe os registros de data e hora de todas as etapas da solicitação, como mostrado abaixo. Com isso, você pode (com bastante facilidade) calcular quanto tempo cada etapa levou.
fonte
curl -v --trace-time
Isso deve ser feito no modo detalhadofonte
Fiz um formatador amigável para detectar pedidos de curl para ajudar na depuração (consulte os comentários para uso). Ele contém todos os parâmetros de saída conhecidos que você pode escrever em um formato fácil de ler.
https://gist.github.com/manifestinteractive/ce8dec10dcb4725b8513
fonte
Aqui está a string com a qual você pode usar
-w
, contém todas as opçõescurl -w
compatíveis.gera JSON.
fonte
\n
ajuda a separar a temporização, quando o corpo não termina com a nova linha:curl -w '\n{"contentType":"..."}...
Aqui está uma linha única do Bash para atingir o mesmo servidor repetidamente:
fonte
Esta é uma versão modificada da resposta de Simons, que torna a saída multi-alinhada uma única linha. Ele também apresenta o registro de data e hora atual, para que seja mais fácil seguir cada linha de saída.
Exemplo de formato de arquivo exemplo cmd resultadosEu usei o acima para capturar respostas lentas no endpoint acima.
fonte