耗时分析
$ man curl # 查看 curl 的使用方式
-w, --write-out <format> # -w 参数配置输出格式
-w
参数中有部分时间相关的参数如下:
time_namelookup
:从请求开始到 DNS 域名解析完成的耗时time_connect
:从请求开始到 TCP 连接建立耗时(三次握手)time_appconnect
:从请求开始到 SSL/SSH 等建立连接耗时( ssl handshake 等)time_pretransfer
:从请求开始到响应开始传输的时间time_redirect
:从请求开始到,包含前面四者耗时,且所有重定向的时间相加,直到最终访问目标服务前的耗时time_starttransfer
:从请求开始到第一个字节将要传输的耗时,包含了time_pretransfer
耗时time_total
:请求的全部耗时
如何发起耗时分析请求
- 直接在命令行中拼写输出格式
curl -w '\ntime_namelookup=%{time_namelookup}\ntime_connect=%{time_connect}\ntime_appconnect=%{time_appconnect}\ntime_redirect=%{time_redirect}\ntime_pretransfer=%{time_pretransfer}\ntime_starttransfer=%{time_starttransfer}\ntime_total=%{time_total}\n\n' -o /dev/null -s -L 'http://voidchen.com'
- 利用文件描述格式
创建一个格式文件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
curl -w '@format.txt' -o /dev/null -s -L 'http://voidchen.com'
耗时计算
- DNS耗时 = time_namelookup
- TCP建连耗时 = time_connect - time_namelookup
- SSL握手耗时 = time_appconnect - time_connect
- 服务器处理请求耗时 = time_starttransfer - time_pretransfer
- TTFB耗时 = time_starttransfer - time_appconnect
- 服务器传输耗时 = time_total - time_starttransfer
- 总耗时 = time_total
TODO 分析脚本
参考
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [email protected]