我有一个 Web 服务,该服务接收 JSON 格式的数据,处理数据,然后将结果返回给请求者。
cURL
衡量请求,响应和总时间。
我的示例请求如下所示:
curl -X POST -d @file server:port
目前,我在 Linux 中time
命令对此进行了测量:
time curl -X POST -d @file server:port
尽管 time 命令仅测量总时间 - 但这并不是我想要的。
有什么方法可以使用cURL
衡量请求和响应时间?
从这篇精彩的博客文章中... https://blog.josephscott.org/2011/10/14/timing-details-with-curl/
cURL 支持格式化输出以获取请求的详细信息(有关详细信息,请参见 cURL 联机帮助页,位于-w, –write-out <format>
)。为了我们的目的,我们将只关注所提供的时序细节。以下时间以秒为单位。
创建一个新文件 curl-format.txt 并粘贴:
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
发出请求:
curl -w "@curl-format.txt" -o /dev/null -s "http://wordpress.com/"
或在 Windows 上,它是...
curl -w "@curl-format.txt" -o NUL -s "http://wordpress.com/"
-w "@curl-format.txt"
告诉 cURL 使用我们的格式文件-o /dev/null
将请求的输出重定向到 / dev / null
-s
告诉 cURL 不显示进度表"http://wordpress.com/"
是我们所请求的 URL。特别是在您的 URL 具有 “&” 查询字符串参数的情况下使用引号
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
alias curltime="curl -w \"@$HOME/.curl-format.txt\" -o /dev/null -s "
然后,您可以简单地致电...
curltime wordpress.org
感谢评论员皮特 · 道尔(Pete Doyle)!
该脚本不需要单独的. txt 文件即可包含格式。
在可执行文件路径中的某个位置创建一个新文件 curltime,然后粘贴:
#!/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
以与别名相同的方式调用:
curltime wordpress.org
将此命令放在 CURLTIME.BAT 中(与 curl.exe 在同一文件夹中)
curl -w "@%~dp0curl-format.txt" -o NUL -s %*
然后,您可以简单地致电...
curltime wordpress.org
答案是:
curl -X POST -d @file server:port -w %{time_connect}:%{time_starttransfer}:%{time_total}
-w
一起使用的所有变量都可以在man curl
找到。
选项 1.测量total time
:
curl -o /dev/null -s -w 'Total: %{time_total}s\n' https://www.google.com
样本输出:
选项 2。要获得time to establish connection
time to first byte (TTFB)
和total time
:
curl -o /dev/null -s -w 'Establish Connection: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n' https://www.google.com
样本输出:
参考: 使用 curl 获取响应时间