技术标签: 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
内容仅个人学习使用,不能作为商业用途,一经发现责任自负!
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掘金: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是工业界最优.
转自:http://www.cnblogs.com/lvcha/p/3721091.html概述有时需要对用户设备进行标识,所以希望能够得到一个稳定可靠并且唯一的识别码。虽然Android系统中提供了这样设备识别码,但是由于Android系统版本、厂商定制系统中的Bug等限制,稳定性和唯一性并不理想。而通过其他硬件信息标识也因为系统版本、手机硬件等限制存在不同程度的问题
【Windows平台】在日常使用Typora写内容的时候,经常会存在有效内容的宽度不够宽的情况.如何修改宽度呢?再确定下当前配置的主题,根据配置的主题,打开不同的.css文件查找到#write, 修改max-width值.重启Typora即可.最终效果图个人站点语雀公众号...
nginx软件介绍Nginx ( “engme x")是一个开源的,支持高性能、高并发的WWW服务器和代理服务软件。它是由俄罗斯人Igor Sysoev开发的,最初被应用在勘罗斯的大型网站www.rambler.ru 上,后来作者将源代码以类BSD许可证的形式开源出来供全球使用。1.1 nginx功能特性*web网站服务*反向代理负载均衡(nginx,lvs,haproxy...
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新特性——综述Spring4.1新特性——Spring核心部分及其他Spring4.1新特性——Spring缓存框架增强Spring4.1新特性——异步调用和事件机制的异常处理Spring4.1新特性——数据库集成测试脚本初始化Spring4.1新特性——Spring MVC增强Spring4.1新特性——页面自动化测试框架Spring MVC...
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格
一、应用场合1. android中用TextView显示文本信息的时候,经常会出现不对齐的现象,很不美观,因此,考虑将全角的符号转换为半角符号,或者半角符号转换为全角符号,达到文本对齐的效果2. 半角占一个字符,全角占两个字符二、
OWC,即Office Web Components,是微软随Office提供的绘图控件,使用它能够绘制绝大部分的图形,但不幸的是 OWC的帮助文件并不好用,网上关于OWC的文章也都很简单,稍微深入一点的问题就很难搜到。所以,把自己研究OWC 的一些心得写在这里,希望能帮助有需要的朋友,使他们不必再去翻看长长的对象(属性、方法)列表。除此之外,也有一些功能还未实现...
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
我们项目组的组长居然要将图片转成二进制流存到数据库内~~。。。我去。。。极度不赞同啊。哎个人意见是将图片上传到服务器端,将图片资源保存保存到服务器端的磁盘上,数据库存储的只是图片在服务端的路径。。。。但。哎~~官大一级压死人啊。。没办法呗~~只好动脑找资料,经过一天的奋斗终于把这问题给解决咯~~呵呵呵我的思路是将图片转成二进制流byte[],再将byte[]转成String类型的字符串,然后利