使用 cURL 对Web请求进行性能测试

· · 468 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在做 Web 开发的时候,经常需要对 Web Page 或者 REST-ful API 做简单的 Benchmark。本文将介绍如何使用 cURL 进行简单快速的性能评测。本文内容将介绍如何使用 curl 分析 web 页面的网络时间,进行性能测试。

使用 curl 查看 web 页面的网络耗时

 

使用 cURL 对Web请求进行性能测试

$ curl -s -w "dnslookup: %{time_namelookup} | connect: %{time_connect} | appconnect: %{time_appconnect} | pretransfer: %{time_pretransfer} | starttransfer: %{time_starttransfer} | total: %{time_total} " -o /dev/null https://www.github.com/

dnslookup: 0.008487 | connect: 0.111289 | appconnect: 0.218127 | pretransfer: 0.218243 | starttransfer: 0.316747 | total: 0.316834

可以看到请求时间为 0.3168 秒。此时:

  • -s, --silent: 让 curl 保持静默模式,不会输出进度条
  • -w 定义输出的格式,这里我们输出了多个请求过程中的时间
  • -o /dev/null: 这个参数用来隐藏 response 的内容
  • 对应的各项网络时间的含义如下,

    time_namelookup:dns解析总共消耗的时间
    time_connect:从开始dns解析到tcp建联成功之间总共消耗的时间
    time_appconnect:从开始dns解析到ssl握手成功之间总共消耗的时间,以收到 Fin 包为准。
    time_pretransfer:从开始dns解析到发起http请求之间总共消耗的时间
    time_starttransfer:从开始dns请求到服务器响应首个字节之间总共消耗的时间
    time_total:整个请求所消耗的时间,包含dns解析、tcp握手和ssl握手的时间

参考 man curl 中的说明,curl -w <format> 可以支持格式模板。我们可以使用 @template-name 的方式对输出格式进行自定义。比如,我们可以将时间类的格式汇总,保存为 curl-fmt.txt,如下。

其他时间的定义,可参考cURL官方文档

\n
            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

执行命令测试,样例如下:

curl -s -w "@curl-fmt.txt" -o /dev/null http://www.baidu.com/

            time_namelookup:  1.101
               time_connect:  1.130
            time_appconnect:  0.000
           time_pretransfer:  1.130
              time_redirect:  0.000
         time_starttransfer:  1.164
                            ----------
                 time_total:  1.165

此时可以看到 DNS lookup, TCP 链接,数据传传输等信息。

关注本站微信公众号(和以上内容无关)InfraPub ,扫码关注:InfraPub

468 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传