发布于 2025-12-10 1 阅读
0

cURL 响应时间 如何使用 curl 测量 Web API 的响应时间

cURL 响应时间如何使用 curl 测量 Web API 的响应时间

为什么curl

有一堆用于对 HTTP 请求进行基准测试的特定工具。,,...
ab那么JMeter为什么 还要使用它呢?wrk
curl

这是因为curl它被广泛使用并且它是 Web 开发人员的一种通用语言。

此外,一些工具还具有将 HTTP 请求作为命令检索的功能curl

复制为 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
Enter fullscreen mode Exit fullscreen mode

它只是输出来自服务器的响应主体。

让我们附加这些选项。

-s -o /dev/null -w  "%{time_starttransfer}\n"
Enter fullscreen mode Exit fullscreen mode

-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
Enter fullscreen mode Exit fullscreen mode

响应时间为 0.188947 秒(188 毫秒)。

为了简化,我还创建了一个包装命令curlb

#!/bin/sh
curl -s -o /dev/null -w '%{time_starttransfer}\n' "$@"
Enter fullscreen mode Exit fullscreen mode

测量响应时间的百分位数

仅根据单个请求进行基准测试是不合适的。

然后我们来测量 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
...
Enter fullscreen mode Exit fullscreen mode

为了测量数字的百分位数,调用的命令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
Enter fullscreen mode Exit fullscreen mode

就是这样!

文章来源:https://dev.to/yuyatakeyama/how-i-measure-response-times-of-web-apis-using-curl-6nh