我们的征途是星辰大海

My Conquest Is the Sea of Stars

curl-w

排障过程中发现curl的一个不太常见参数-w,检查 time_appconnect 非常好用,记录一下。

接到用户反馈一个服务容器内部调用一个接口是相当慢会出现卡顿,如图示

《curl-w》

上图2次curl,一次秒出结果,1次无反应,这样的信息其实不全,当然想查看明细,网上找了一圈,发现了1个非常有用的参数。

-w 格式化输出  https://curl.haxx.se/docs/manpage.html#-w

https://cizixs.com/2017/04/11/use-curl-to-analyze-request/

cat curl-format.txt
    time_namelookup:  %{time_namelookup}\n
       time_connect:  %{time_connect}\n
    time_appconnect:  %{time_appconnect}\n
      time_redirect:  %{time_redirect}\n
   time_pretransfer:  %{time_pretransfer}\n
 time_starttransfer:  %{time_starttransfer}\n
                    ----------\n
         time_total:  %{time_total}\n

  • time_namelookup: DNS解析时间
  • time_connect:tcp建联时间
  • time_appconnect:SSL/SSH 等上层协议建立连接的时间,比如 connect/handshake 的时间。注意,即使curl语句中带有-k参数(忽略证书校验),这一项时间仍然存在,因为-k只是忽略证书的校验,本身SSL握手仍然存在。
  • time_redirect:从开始到最后一个请求事务的时间
  • time_pretransfer:从请求开始到开始传输的时间
  • time_total:这次请求花费的全部时间

本次检查命令如下

curl -w “@curl-format” -o /dev/null -s https://域名打码.com:9443/receiveHTTPData

响应正常时,0.6秒完成全过程。

《curl-w》

异常时,20多秒完成全过程。其中耗时最大的是 time_appconnect这一段,即 SSL/SSH 等上层协议建立连接的时间,比如 connect/handshake 的时间。

后来多次容器内外,甚至本地电脑测试,结果相同。

《curl-w》


找到了cloudflare关于一次访问各段花费时间描述说明,如下图


更多详情可以参考这里 https://blog.cloudflare.com/a-question-of-timing/
《curl-w》

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据