cURL 响应时间如何使用 curl 测量 Web API 的响应时间
为什么curl
?
有一堆用于对 HTTP 请求进行基准测试的特定工具。,,...ab
那么JMeter
为什么 还要使用它呢?wrk
curl
这是因为curl
它被广泛使用并且它是 Web 开发人员的一种通用语言。
此外,一些工具还具有将 HTTP 请求作为命令检索的功能curl
。
它非常有用,因为它不仅复制 URL 和参数,还复制包括Authorization
或在内的请求标头Cookie
。
工具
在本文中,我使用了以下工具:
使用以下方法测量响应时间curl
首先,我们来准备一个curl
命令。这次,我使用 Google Chrome 获取了访问我个人博客的命令。(Cookie
已删除)
$ curl 'https://blog.yuyat.jp/' -H 'Accept-Encoding: gzip, deflate, sdch' -H 'Accept-Language: en-US,en;q=0.8,ja;q=0.6' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36' -H 'Connection: keep-alive' --compressed
它只是输出来自服务器的响应主体。
让我们附加这些选项。
-s -o /dev/null -w "%{time_starttransfer}\n"
-s
是让进度保持静默,-o
是将响应主体处理掉/dev/null
。
重要的是-w
。
我们可以指定多种格式,这次我用它来time_starttransfer
检索响应时间(到第一个字节的时间)。
如下图所示:
$ curl 'https://blog.yuyat.jp/' -H 'Accept-Encoding: gzip, deflate, sdch' -H 'Accept-Language: en-US,en;q=0.8,ja;q=0.6' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36' -H 'Connection: keep-alive' --compressed -s -o /dev/null -w "%{time_starttransfer}\n"
0.188947
响应时间为 0.188947 秒(188 毫秒)。
为了简化,我还创建了一个包装命令curlb
:
#!/bin/sh
curl -s -o /dev/null -w '%{time_starttransfer}\n' "$@"
测量响应时间的百分位数
仅根据单个请求进行基准测试是不合适的。
然后我们来测量 100 个请求的百分位数。
ntimes
对于此类目的很有用。
您可以使用它来安装go get github.com/yuya-takeyama/ntimes
,或者存储库中有预先构建的二进制文件。
让我们将其附加ntimes 100 --
到命令的开头curl
。
$ ntimes 100 -- curlb 'https://blog.yuyat.jp/' -H 'Accept-Encoding: gzip, deflate, sdch' -H 'Accept-Language: en-US,en;q=0.8,ja;q=0.6' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36' -H 'Connection: keep-alive' --compressed
0.331915
0.064085
0.059883
0.074047
0.059774
...
为了测量数字的百分位数,调用的命令percentile
可能是最简单的选择。
通过安装它go get github.com/yuya-takeyama/percentile
或从 repo 下载预先构建的二进制文件。
并附加到| percentile
命令的末尾。
$ ntimes 100 -- curlb 'https://blog.yuyat.jp/' -H 'Accept-Encoding: gzip, deflate, sdch' -H 'Accept-Language: en-US,en;q=0.8,ja;q=0.6' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36' -H 'Connection: keep-alive' --compressed | percentile
50%: 0.061777
66%: 0.06412
75%: 0.06872300000000001
80%: 0.07029000000000001
90%: 0.07496700000000001
95%: 0.076153
98%: 0.077226
99%: 0.07957
100%: 0.109931
就是这样!
文章来源:https://dev.to/yuyatakeyama/how-i-measure-response-times-of-web-apis-using-curl-6nh