获取访问站点接口时的各类响应时间

  • 2016-09-27
  • 6496
  • 1

最近产品反馈我们部门负责的某个新项目在访问时不够稳定,且经常收到监控时延过高的报警邮件,有时访问一个页面需要好几秒,于是第一反应是查看之前用swoole搭的监控系统,发现大部分时延在2秒以下,偶尔会出现3/4秒的情况。

19-pic_hd

项目本身都已接口化,于是向运维拿了外网权限查看log,发现该接口的主要时延是在用curl调用公共模块接口时产生的,但是log只记了client发出请求到web的server发送回所有的相应数据的时间(相当于curl的time_total时间)和接口总运行时间,同时又问了下负责公共接口模块的同事,答复是没什么问题。

于是猜测时延是在dns解析和tcp连接时间上,但log又没记这个,于是查了下php的curl手册,发现这几个参数可以记在log里。

  • CURLINFO_NAMELOOKUP_TIME – Time in seconds until name resolving was complete
  • CURLINFO_CONNECT_TIME – Time in seconds it took to establish the connection
  • CURLINFO_PRETRANSFER_TIME – Time in seconds from start until just before file transfer begins
  • CURLINFO_STARTTRANSFER_TIME – Time in seconds until the first byte is about to be transferred

time_namelookup: DNS解析时间,从请求开始到DNS解析完毕所用时间

time_connect: 连接时间,从开始到建立TCP连接完成所用时间,包括前边DNS解析时间,如果需要单纯的得到连接时间,用这个time_connect时间减去前边time_namelookup时间

time_pretransfer: 从开始直到第一个远程请求接收到第一个字节的时间。包括前面的2个时间 。

time_starttransfer :开始传输时间。在发出请求之后,Web 服务器返回数据的第一个字节所用的时间。包括前面的时间。

最后排查出来time_connect时间不稳定,有时候会达到2秒多。

于是解决方法:

1)添加redis缓存,尽量少走网络。

2)tcp连接优化。

 

附shell命令查看curl时间:

 

参考链接:

php的curl手册curl_getinfo

php curl getinfo的时间分析

curl 查看一个web站点的响应时间(rt)

获取站点的各类响应时间(dns解析时间,响应时间,传输时间)

 

 


上一篇:  下一篇:

评论

  • printtest回复

    very nice post, i definitely love this web site, keep on it

Copyright © 2014-2016 lxlxw All Right Reserved