De esta brillante publicación de blog ... https://blog.josephscott.org/2011/10/14/timing-details-with-curl/
cURL admite salida formateada para los detalles de la solicitud (consulte la página de manual de cURL para más detalles , en -w, –write-out <format>
). Para nuestros propósitos, nos centraremos solo en los detalles de tiempo que se proporcionan. Los tiempos a continuación son en segundos .
Cree un nuevo archivo, curl-format.txt, y péguelo en:
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
Haz una solicitud:
curl -w "@curl-format.txt" -o /dev/null -s "http://wordpress.com/"
O en Windows, es ...
curl -w "@curl-format.txt" -o NUL -s "http://wordpress.com/"
Lo que esto hace:
-w "@curl-format.txt"
le dice a cURL que use nuestro archivo de formato
-o /dev/null
redirige la salida de la solicitud a / dev / null
-s
le dice a cURL que no muestre un medidor de progreso
"http://wordpress.com/"
es la URL que estamos solicitando. Use comillas especialmente si su URL tiene parámetros de cadena de consulta "&"
Y esto es lo que obtienes:
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
Hacer un acceso directo de Linux / Mac (alias)
alias curltime="curl -w \"@$HOME/.curl-format.txt\" -o NUL -s "
Entonces puedes simplemente llamar ...
curltime wordpress.org
Gracias al comentarista Pete Doyle!
Hacer un script independiente de Linux / Mac
Este script no requiere un archivo .txt separado para contener el formato.
Cree un nuevo archivo, curltime, en algún lugar de su ruta ejecutable, y pegue:
#!/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
Llame de la misma manera que el alias:
curltime wordpress.org
Hacer un acceso directo de Windows (también conocido como archivo BAT)
Ponga este comando en CURLTIME.BAT (en la misma carpeta que curl.exe)
curl -w "@%~dp0curl-format.txt" -o NUL -s %*
Entonces puedes simplemente llamar ...
curltime wordpress.org
\n
para romper la línea en el archivo de texto@curl -w "@%~dp0curl-format.txt" -o NUL -s %*
Gran respuestaalias curltime="curl -w \"@$HOME/.curl-format.txt\" -o NUL -s "
. Probablemente también funciona en MacOS.Aquí está la respuesta:
Todas las variables utilizadas con
-w
se pueden encontrar enman curl
.fuente
"\n%{time_connect}:%{time_starttransfer}:%{time_total}\n"
-sS
).Opción 1. Para medir
total time
:Salida de muestra:
Opción 2. Para obtener
time to establish connection
,TTFB: time to first byte
ytotal time
:Salida de muestra:
Ref: Obtenga tiempo de respuesta con curl
fuente
Un acceso directo que puede agregar a su .bashrc, etc., basado en otras respuestas aquí:
Uso:
fuente
curl -o /dev/null -s -w "time_total: %{time_total} sec\nsize_download: %{size_download} bytes\n" https://www.google.com
Lo siguiente está inspirado en la respuesta de Simon. Es autónomo (no requiere un archivo de formato separado), lo que lo hace ideal para su inclusión
.bashrc
.Además, debería funcionar con todos los argumentos que
curl
normalmente se toman, ya que"$@"
simplemente los pasa. Por ejemplo, puedes hacer:Salida:
fuente
Si desea analizar o resumir la latencia, puede probar apache bench:
Por ejemplo:
Mostrará:
fuente
ab
acepta fácilmente muchas de las mismas banderas que,curl
por ejemplo,-H
para encabezados. Utilicé este comando para comparar los tiempos de respuesta de una API de terceros (suministrando el token portador en un encabezado de autorización). Trabajó brillantemente.Otra forma es configurar
~/.curlrc
asíEntonces la salida de
curl
esfuente
Hey es mejor que Apache Bench, tiene menos problemas con SSL
Referencias
fuente
Otra opción que es quizás la más simple en términos de la línea de comandos es agregar la
--trace-time
opción integrada :Aunque técnicamente no genera los tiempos de los diversos pasos según lo solicitado por el OP, sí muestra las marcas de tiempo para todos los pasos de la solicitud como se muestra a continuación. Con esto, puede calcular (con bastante facilidad) cuánto tiempo ha tomado cada paso.
fuente
curl -v --trace-time
Esto debe hacerse en modo detalladofuente
Hice un formateador amigable para detectar solicitudes de curl para ayudar con la depuración (ver comentarios para el uso). Contiene todos los parámetros de salida conocidos que puede escribir en un formato fácil de leer.
https://gist.github.com/manifestinteractive/ce8dec10dcb4725b8513
fuente
Aquí está la cadena que puede usar
-w
, contiene todas las opciones quecurl -w
admite.salidas JSON.
fuente
\n
ayuda a separar el tiempo cuando el cuerpo no termina con una nueva línea:curl -w '\n{"contentType":"..."}...
Aquí hay una línea Bash para golpear el mismo servidor repetidamente:
fuente
Esta es una versión modificada de la respuesta de Simons que hace que la salida multilínea sea una sola línea. También presenta la marca de tiempo actual para que sea más fácil seguir cada línea de salida.
Formato de muestra fle cmd de ejemplo resultadosUsé lo anterior para captar respuestas lentas en el punto final anterior.
fuente