php curl 返回响应时间,使用curl命令查看请求响应时间方法(转载)_biubiu爱吃肉的博客-程序员宅基地

技术标签: php curl 返回响应时间  

curl命令查看请求响应时间

# curl -o /dev/null -s -w %{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%{speed_download}"\n" "http://www.36nu.com"

0.014::0.015::0.018::0.019::1516256.00

-o:把curl 返回的html、js 写到垃圾回收站[ /dev/null]

-s:去掉所有状态

-w:按照后面的格式写出rt

time_namelookup:DNS 解析域名www.36nu.com的时间

time_commect:client和server端建立TCP 连接的时间

time_starttransfer:从client发出请求;到web的server 响应第一个字节的时间

time_total:client发出请求;到web的server发送会所有的相应数据的时间

speed_download:下周速度  单位 byte/s

上面这条命令及返回结果可以这么理解:

0.014: DNS 服务器解析www.36nu.com 的时间单位是s

0.015: client发出请求,到c/s 建立TCP 的时间;里面包括DNS解析的时间

0.018: client发出请求;到s响应发出第一个字节开始的时间;包括前面的2个时间

0.019: client发出请求;到s把响应的数据全部发送给client;并关闭connect的时间

1516256.00 :下载数据的速度

建立TCP连接到server返回client第一个字节的时间:0.018s - 0.015s = 0.003s

server把响应数据发送给client的时间:0.019s - 0.018 = 0.01s

################################

curl 命令提供了 -w 参数,这个参数在 manpage 是这样解释的:

-w, --write-out

Make curl display information on stdout after a completed transfer. The format is a string that may contain plain text mixed with any number of variables. The format

can be specified as a literal "string", or you can have curl read the format from a file with "@filename" and to tell curl to read the format from stdin you write

"@-".

The variables present in the output format will be substituted by the value or text that curl thinks fit, as described below. All variables are specified as %{vari‐

able_name} and to output a normal % you just write them as %%. You can output a newline by using \n, a carriage return with \r and a tab space with \t.

它能够按照指定的格式打印某些信息,里面可以使用某些特定的变量,而且支持 \n、\t和 \r转义字符。提供的变量很多,比如 status_code、local_port、size_download 等等,这篇文章我们只关注和请求时间有关的变量(以 time_ 开头的变量)。

它能够按照指定的格式打印某些信息,里面可以使用某些特定的变量,而且支持 \n、\t和 \r转义字符。提供的变量很多,比如 status_code、local_port、size_download 等等,这篇文章我们只关注和请求时间有关的变量(以 time_ 开头的变量)。

先往文本文件 curl-format.txt 写入下面的内容:

➜ ~ 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 域名解析的时候,就是把 https://zhihu.com 转换成 ip 地址的过程

time_connect:TCP 连接建立的时间,就是三次握手的时间

time_appconnect:SSL/SSH 等上层协议建立连接的时间,比如 connect/handshake 的时间

time_redirect:从开始到最后一个请求事务的时间

time_pretransfer:从请求开始到响应开始传输的时间

time_starttransfer:从请求开始到第一个字节将要传输的时间

time_total:这次请求花费的全部时间

我们先看看一个简单的请求,没有重定向,也没有 SSL 协议的时间:

➜ ~ curl -w "@curl-format.txt" -o /dev/null -s -L "http://cizixs.com"

time_namelookup: 0.012

time_connect: 0.227

time_appconnect: 0.000

time_redirect: 0.000

time_pretransfer: 0.227

time_starttransfer: 0.443

----------

time_total: 0.867

可以看到这次请求各个步骤的时间都打印出来了,每个数字的单位都是秒(seconds),这样可以分析哪一步比较耗时,方便定位问题。这个命令各个参数的意义:

-w:从文件中读取要打印信息的格式

-o /dev/null:把响应的内容丢弃,因为我们这里并不关心它,只关心请求的耗时情况

-s:不要打印进度条

从这个输出,我们可以算出各个步骤的时间:

DNS 查询:12ms

TCP 连接时间:pretransfter(227) - namelookup(12) = 215ms

服务器处理时间:starttransfter(443) - pretransfer(227) = 216ms

内容传输时间:total(867) - starttransfer(443) = 424ms

来个比较复杂的,访问某度首页,带有中间有重定向和 SSL 协议:

➜ ~ curl -w "@curl-format.txt" -o /dev/null -s -L "https://baidu.com"

time_namelookup: 0.012

time_connect: 0.018

time_appconnect: 0.328

time_redirect: 0.356

time_pretransfer: 0.018

time_starttransfer: 0.027

----------

time_total: 0.384

可以看到 time_appconnect 和 time_redirect 都不是 0 了,其中 SSL 协议处理时间为 328-18=310ms。而且 pretransfer 和 starttransfer 的时间都缩短了,这是重定向之后请求的时间。

参考资料

原文链接:https://blog.csdn.net/zzhongcy/article/details/100116926

内容仅个人学习使用,不能作为商业用途,一经发现责任自负!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34357209/article/details/115240409

智能推荐

with root cause org.springframework.expression.spel.SpelEvaluationException* field ‘records‘ cannot_假期的学习的博客-程序员宅基地

1、 前言1.1 idae中spring boot项目使用thymeleaf模板,前端HTML页面获取后台Controller中的Model存放的数据1.2 项目在登录后跳转到后台显示查询到数据库数据的页面(首先是还没有查询,需要进入页面后点击按钮才去查询并显示)1.3 这里就直接报错误了,最开始我只能通过把查询到的数据显示到页面(就是刚刚登录成功,就跳转去查询数据)的方式解决错误,后面我发现一个好玩的方法,在这里介绍一下。2、 错误信息2.1主要错误2021-11-20 20:40:36.53

Questa Sim(逻辑测试)_Saint-000的博客-程序员宅基地

Questa Sim(逻辑测试)作者:Saint掘金:https://juejin.im/user/5aa1f89b6fb9a028bb18966a微博:https://weibo.com/5458277467/profile?topnav=1&wvr=6&is_all=1GitHub:github.com/saint-000知乎:https://www.zhihu.com/people/saint-80-61/columnsQuesta Sim和ModelsSim是工业界最优.

获取Android设备唯一标识码_ForeverMaggieGuo的博客-程序员宅基地

转自:http://www.cnblogs.com/lvcha/p/3721091.html概述有时需要对用户设备进行标识,所以希望能够得到一个稳定可靠并且唯一的识别码。虽然Android系统中提供了这样设备识别码,但是由于Android系统版本、厂商定制系统中的Bug等限制,稳定性和唯一性并不理想。而通过其他硬件信息标识也因为系统版本、手机硬件等限制存在不同程度的问题

更改Typora宽度_书唐瑞的博客-程序员宅基地_typora 宽度

【Windows平台】在日常使用Typora写内容的时候,经常会存在有效内容的宽度不够宽的情况.如何修改宽度呢?再确定下当前配置的主题,根据配置的主题,打开不同的.css文件查找到#write, 修改max-width值.重启Typora即可.最终效果图个人站点语雀公众号...

Nginx简介_real向往的博客-程序员宅基地

nginx软件介绍Nginx ( “engme x")是一个开源的,支持高性能、高并发的WWW服务器和代理服务软件。它是由俄罗斯人Igor Sysoev开发的,最初被应用在勘罗斯的大型网站www.rambler.ru 上,后来作者将源代码以类BSD许可证的形式开源出来供全球使用。1.1 nginx功能特性*web网站服务*反向代理负载均衡(nginx,lvs,haproxy...

springboot之kafkaListener手动开启与暂停_BrighteStar的博客-程序员宅基地

springboot之kafkaListener手动开启与暂停业务场景由于这是项目辅助服务,用于向其它各个服务推送数据#mermaid-svg-6ojkiGJhyn6hpvDm .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-6ojkiGJhyn6hpvDm .label text{fill:#333}#m

随便推点

Spring4.1新特性——数据库集成测试_jinnianshilongnian的博客-程序员宅基地

目录Spring4.1新特性——综述Spring4.1新特性——Spring核心部分及其他Spring4.1新特性——Spring缓存框架增强Spring4.1新特性——异步调用和事件机制的异常处理Spring4.1新特性——数据库集成测试脚本初始化Spring4.1新特性——Spring MVC增强Spring4.1新特性——页面自动化测试框架Spring MVC...

apk反编译源码与资源文件_火龙映天的博客-程序员宅基地_反编译apk资源文件

apk文件实际上是一个zip压缩包,将扩展名改为zip后可以直接解压。但是解压之后无法查看源码与资源文件,因为都是加密的。如果要查看源码与资源文件,就需要反编译。apk源码反编译工具有不少,下面介绍的是jadx。jadx是一款使用java语言开发并且开源的apk反编译工具。其github地址为:https://github.com/skylot/jadx。目前最新版本为:1.2.0。jadx支持常见的apk、dex、jar、class、smali、zip、aar、arsc格式文件,而且还支持jadx格

【android】半角符号与全角符号的转换_realizelizj的博客-程序员宅基地

一、应用场合1.  android中用TextView显示文本信息的时候,经常会出现不对齐的现象,很不美观,因此,考虑将全角的符号转换为半角符号,或者半角符号转换为全角符号,达到文本对齐的效果2. 半角占一个字符,全角占两个字符二、

Office Web Components(OWC)绘图控件使用11个问答[转]_weixin_34072458的博客-程序员宅基地

OWC,即Office Web Components,是微软随Office提供的绘图控件,使用它能够绘制绝大部分的图形,但不幸的是 OWC的帮助文件并不好用,网上关于OWC的文章也都很简单,稍微深入一点的问题就很难搜到。所以,把自己研究OWC 的一些心得写在这里,希望能帮助有需要的朋友,使他们不必再去翻看长长的对象(属性、方法)列表。除此之外,也有一些功能还未实现...

SpringMVC面试题大总结_步尔斯特的博客-程序员宅基地_springmvc面试题

1、什么是Spring MVC ?简单介绍下你对springMVC的理解?2、SpringMVC的流程?3、Springmvc的优点:4、SpringMVC怎么样设定重定向和转发的?5、 SpringMVC常用的注解有哪些?6、SpingMvc中的控制器的注解一般用哪个?有没有别的注解可以替代?7、springMVC和struts2的区别有哪些?8、如何解决POST请求中文乱码问题,GET的又如何处理呢?9、SpringMvc里面拦截器是怎么写的:10、上传图片?11、SpringMvc怎么和AJA

显示web端servlet向android端传输二进制格式图片_illusion_Luna的博客-程序员宅基地

我们项目组的组长居然要将图片转成二进制流存到数据库内~~。。。我去。。。极度不赞同啊。哎个人意见是将图片上传到服务器端,将图片资源保存保存到服务器端的磁盘上,数据库存储的只是图片在服务端的路径。。。。但。哎~~官大一级压死人啊。。没办法呗~~只好动脑找资料,经过一天的奋斗终于把这问题给解决咯~~呵呵呵我的思路是将图片转成二进制流byte[],再将byte[]转成String类型的字符串,然后利