De ce brillant article de blog ... https://blog.josephscott.org/2011/10/14/timing-details-with-curl/
cURL prend en charge la sortie formatée pour les détails de la demande (voir la page de manuel cURL pour plus de détails , sous -w, –write-out <format>
). Pour nos besoins, nous nous concentrerons uniquement sur les détails de calendrier qui sont fournis. Les temps ci-dessous sont en secondes .
Créez un nouveau fichier, curl-format.txt, et collez-le:
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
Faire une demande:
curl -w "@curl-format.txt" -o /dev/null -s "http://wordpress.com/"
Ou sous Windows, c'est ...
curl -w "@curl-format.txt" -o NUL -s "http://wordpress.com/"
Ce que cela fait:
-w "@curl-format.txt"
indique à cURL d'utiliser notre fichier de format
-o /dev/null
redirige la sortie de la demande vers / dev / null
-s
indique à cURL de ne pas montrer qu'un indicateur de progression
"http://wordpress.com/"
est l'URL que nous demandons. Utilisez des guillemets en particulier si votre URL a des paramètres de chaîne de requête "&"
Et voici ce que vous récupérez:
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
Créer un raccourci Linux / Mac (alias)
alias curltime="curl -w \"@$HOME/.curl-format.txt\" -o NUL -s "
Ensuite, vous pouvez simplement appeler ...
curltime wordpress.org
Merci au commentateur Pete Doyle!
Créer un script autonome Linux / Mac
Ce script ne nécessite pas de fichier .txt distinct pour contenir la mise en forme.
Créez un nouveau fichier, curltime, quelque part dans votre chemin exécutable, et collez-le:
#!/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
Appelez de la même manière que l'alias:
curltime wordpress.org
Créer un raccourci Windows (aka fichier BAT)
Placez cette commande dans CURLTIME.BAT (dans le même dossier que curl.exe)
curl -w "@%~dp0curl-format.txt" -o NUL -s %*
Ensuite, vous pouvez simplement appeler ...
curltime wordpress.org
\n
pour briser la ligne dans le fichier texte@curl -w "@%~dp0curl-format.txt" -o NUL -s %*
Excellente réponsealias curltime="curl -w \"@$HOME/.curl-format.txt\" -o NUL -s "
. Fonctionne probablement aussi sur MacOS.Voici la réponse:
Toutes les variables utilisées avec
-w
se trouvent dansman curl
.la source
"\n%{time_connect}:%{time_starttransfer}:%{time_total}\n"
-sS
).Option 1. Pour mesurer
total time
:Exemple de sortie:
Option 2. Pour obtenir
time to establish connection
,TTFB: time to first byte
ettotal time
:Exemple de sortie:
Ref: Obtenez le temps de réponse avec curl
la source
Un raccourci que vous pouvez ajouter à votre .bashrc, etc., basé sur d'autres réponses ici:
Usage:
la source
curl -o /dev/null -s -w "time_total: %{time_total} sec\nsize_download: %{size_download} bytes\n" https://www.google.com
Ce qui suit est inspiré par la réponse de Simon. Il est autonome (ne nécessite pas de fichier de format séparé), ce qui le rend idéal pour l'inclusion dans
.bashrc
.De plus, il devrait fonctionner avec tous les arguments qui
curl
prennent normalement, car le"$@"
passe juste à travers. Par exemple, vous pouvez faire:Production:
la source
Si vous souhaitez analyser ou résumer la latence, vous pouvez essayer apache bench:
Par exemple:
Il montrera:
la source
ab
accepte facilement un grand nombre des mêmes indicateurs quecurl
par exemple-H
pour les en-têtes. J'ai utilisé cette commande pour comparer les temps de réponse d'une API tierce (en fournissant le jeton au porteur dans un en-tête d'autorisation). Fonctionne avec brio.Une autre façon est de configurer
~/.curlrc
comme ceciAinsi, la sortie de
curl
estla source
Hey c'est mieux qu'Apache Bench, a moins de problèmes avec SSL
Références
la source
Une autre option qui est peut-être la plus simple en termes de ligne de commande est d'ajouter l'
--trace-time
option intégrée :Même s'il ne produit pas techniquement les timings des différentes étapes comme demandé par l'OP, il affiche les horodatages pour toutes les étapes de la demande comme indiqué ci-dessous. En utilisant cela, vous pouvez (assez facilement) calculer combien de temps chaque étape a pris.
la source
curl -v --trace-time
Cela doit être fait en mode verbeuxla source
J'ai fait un formateur convivial pour renifler les demandes de boucles pour aider au débogage (voir les commentaires d'utilisation). Il contient tous les paramètres de sortie connus que vous pouvez écrire dans un format facile à lire.
https://gist.github.com/manifestinteractive/ce8dec10dcb4725b8513
la source
voici la chaîne que vous pouvez utiliser
-w
, contient toutes les options prises encurl -w
charge.sorties JSON.
la source
\n
aide à séparer le moment où le corps ne se termine pas avec la nouvelle ligne:curl -w '\n{"contentType":"..."}...
Voici un one-liner Bash pour frapper le même serveur à plusieurs reprises:
la source
Il s'agit d'une version modifiée de la réponse Simons qui fait de la sortie multiligne une seule ligne. Il présente également l'horodatage actuel afin qu'il soit plus facile de suivre chaque ligne de sortie.
Exemple de format de fichier exemple cmd résultatsJ'ai utilisé ce qui précède pour capturer des réponses lentes sur le point final ci-dessus.
la source