Aus diesem brillanten Blog-Beitrag ... https://blog.josephscott.org/2011/10/14/timing-details-with-curl/
cURL unterstützt die formatierte Ausgabe für die Details der Anforderung (Details finden Sie in der cURL-Manpage unter -w, –write-out <format>
). Für unsere Zwecke konzentrieren wir uns nur auf die bereitgestellten Timing-Details. Die Zeiten unten sind in Sekunden angegeben .
Erstellen Sie eine neue Datei, curl-format.txt, und fügen Sie Folgendes ein:
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
Eine Anfrage stellen:
curl -w "@curl-format.txt" -o /dev/null -s "http://wordpress.com/"
Oder unter Windows ist es ...
curl -w "@curl-format.txt" -o NUL -s "http://wordpress.com/"
Was dies tut:
-w "@curl-format.txt"
Weist cURL an, unsere Formatdatei zu verwenden.
-o /dev/null
Leitet die Ausgabe der Anforderung an / dev / null um.
-s
Weist cURL an, keine Fortschrittsanzeige anzuzeigen. Dies
"http://wordpress.com/"
ist die URL, die wir anfordern. Verwenden Sie Anführungszeichen, insbesondere wenn Ihre URL Abfragezeichenfolgenparameter "&" enthält
Und hier ist, was Sie zurückbekommen:
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
Erstellen Sie eine Linux / Mac-Verknüpfung (Alias)
alias curltime="curl -w \"@$HOME/.curl-format.txt\" -o NUL -s "
Dann können Sie einfach anrufen ...
curltime wordpress.org
Vielen Dank an Kommentator Pete Doyle!
Erstellen Sie ein eigenständiges Linux / Mac-Skript
Dieses Skript benötigt keine separate TXT-Datei, um die Formatierung zu enthalten.
Erstellen Sie eine neue Datei (curltime) irgendwo in Ihrem ausführbaren Pfad und fügen Sie Folgendes ein:
#!/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
Rufen Sie den Alias genauso auf:
curltime wordpress.org
Erstellen Sie eine Windows-Verknüpfung (auch bekannt als BAT-Datei).
Fügen Sie diesen Befehl in CURLTIME.BAT ein (im selben Ordner wie curl.exe).
curl -w "@%~dp0curl-format.txt" -o NUL -s %*
Dann können Sie einfach anrufen ...
curltime wordpress.org
\n
, um die Zeile in der Textdatei zu brechen@curl -w "@%~dp0curl-format.txt" -o NUL -s %*
alias curltime="curl -w \"@$HOME/.curl-format.txt\" -o NUL -s "
. Funktioniert wahrscheinlich auch unter MacOS.Hier ist die Antwort:
Alle mit verwendeten Variablen
-w
finden Sie inman curl
.quelle
"\n%{time_connect}:%{time_starttransfer}:%{time_total}\n"
-sS
).Option 1. Zum Messen
total time
:Beispielausgabe:
Option 2. Um zu erhalten
time to establish connection
,TTFB: time to first byte
undtotal time
:Beispielausgabe:
Ref: Holen Sie sich die Reaktionszeit mit Curl
quelle
Eine Verknüpfung, die Sie zu Ihrer .bashrc usw. hinzufügen können, basierend auf anderen Antworten hier:
Verwendungszweck:
quelle
curl -o /dev/null -s -w "time_total: %{time_total} sec\nsize_download: %{size_download} bytes\n" https://www.google.com
Das Folgende ist von Simons Antwort inspiriert. Es ist in sich geschlossen (erfordert keine separate Formatdatei), was es ideal für die Aufnahme in macht
.bashrc
.Darüber hinaus sollte es mit allen Argumenten funktionieren, die
curl
normalerweise benötigt werden, da sie"$@"
nur durchlaufen werden. Zum Beispiel können Sie Folgendes tun:Ausgabe:
quelle
Wenn Sie die Latenz analysieren oder zusammenfassen möchten, können Sie Apache Bench ausprobieren:
Zum Beispiel:
Wird sich zeigen:
quelle
ab
akzeptiert handlich viele der gleichen Flags wiecurl
zB-H
für Header. Ich habe diesen Befehl verwendet, um die Antwortzeiten einer Drittanbieter-API (Bereitstellung des Inhaber-Tokens in einem Autorisierungsheader) zu vergleichen. Hat hervorragend funktioniert.Eine andere Möglichkeit ist die Konfiguration
~/.curlrc
wie folgtDie Ausgabe von
curl
ist alsoquelle
Hey ist besser als Apache Bench, hat weniger Probleme mit SSL
Verweise
quelle
Eine andere Option, die in Bezug auf die Befehlszeile vielleicht die einfachste ist, ist das Hinzufügen der integrierten
--trace-time
Option:Obwohl die vom OP angeforderten Zeitabläufe der verschiedenen Schritte technisch nicht ausgegeben werden, werden die Zeitstempel für alle Schritte der Anforderung wie unten gezeigt angezeigt. Auf diese Weise können Sie (ziemlich einfach) berechnen, wie lange jeder Schritt gedauert hat.
quelle
curl -v --trace-time
Dies muss im ausführlichen Modus erfolgenquelle
Ich habe einen freundlichen Formatierer zum Schnüffeln von Curl-Anfragen erstellt, um beim Debuggen zu helfen (siehe Kommentare zur Verwendung). Es enthält alle bekannten Ausgabeparameter, die Sie in einem leicht lesbaren Format ausschreiben können.
https://gist.github.com/manifestinteractive/ce8dec10dcb4725b8513
quelle
Hier ist die Zeichenfolge, mit der Sie arbeiten können. Sie
-w
enthält allecurl -w
unterstützten Optionen .gibt JSON aus.
quelle
\n
hilft dabei, das Timing zu trennen, wenn der Körper nicht mit einer neuen Zeile endet:curl -w '\n{"contentType":"..."}...
Hier ist ein Bash-Einzeiler, mit dem Sie denselben Server wiederholt erreichen können:
quelle
Dies ist eine modifizierte Version von Simons Antwort, die die mehrzeilige Ausgabe zu einer einzigen Zeile macht. Außerdem wird der aktuelle Zeitstempel eingeführt, damit Sie jeder Ausgabezeile leichter folgen können.
Beispielformat fle Beispiel cmd ErgebnisseIch habe das oben genannte verwendet, um langsame Antworten auf dem oben genannten Endpunkt zu erhalten.
quelle