Skip to content

HTTP

HTTP 请求过程

每次http请求经过这些过程: 客户端发起请求-->DNS解析-->TCP连接-->SSL等协议握手-->服务器处理-->内容传输-->完成

curl 命令手册

查看curl 命令的手册,curl命令支持以下阶段的时间统计:

  • time_namelookup : 从请求开始到DNS解析完成的耗时
  • time_connect : 从请求开始到TCP三次握手完成耗时
  • time_appconnect : 从请求开始到TLS握手完成的耗时
  • time_pretransfer : 从请求开始到向服务器发送第一个GET请求开始之前的耗时
  • time_redirect : 重定向时间,包括到内容传输前的重定向的DNS解析、TCP连接、内容传输等时间
  • time_starttransfer : 从请求开始到内容传输完成的时间
  • time_total : 从请求开始到完成的总耗时

主要的 HTTP 性能指标

  • DNS请求耗时 : 域名的NS及本地使用DNS的解析速度
  • TCP建立耗时 : 服务器网络层面的速度
  • SSL握手耗时 : 服务器处理HTTPS等协议的速度
  • 服务器处理请求时间 : 服务器处理HTTP请求的速度
  • TTFB : 客户端发出第一个字节到收到请求的时间(Time to first bytes)
  • 服务器响应耗时 :服务器响应第一个字节到全部传输完成耗时(内容传输时间)
  • 请求完成总耗时

注意: 如果想分析HTTP性能的瓶颈,不建议使用带有重定向的请求进行分析,重定向会导致建立多次TCP连接或多次HTTP请求,多次请求的数据混在一起,数据不够直观,因此 time_redirect 对实际分析意义不大。
其中的运算关系:

  • DNS请求耗时 = time_namelookup
  • TCP三次握手耗时 = time_connect - time_namelookup
  • SSL握手耗时 = time_appconnect - time_connect
  • TTFB耗时 = time_starttransfer - time_appconnect
  • 服务器处理请求耗时 = time_starttransfer - time_pretransfer
  • 服务器传输耗时 = time_total - time_starttransfer
  • 总耗时 = time_total