1. 准备文件模版(curl.txt)

\n
time_namelookup: %{time_namelookup}\n
time_connect: %{time_connect}\n
time_appconnect: %{time_appconnect}\n
time_pretransfer: %{time_pretransfer}\n
time_redirect: %{time_redirect}\n
time_starttransfer: %{time_starttransfer}\n
----------\n
time_total: %{time_total}\n
\n

  2. 使用curl带以下参数请求

curl -w "@curl.txt" -o /dev/null -s https://www.sogo.com

  结果:

[@ ~]# curl -w "@curl" -o /dev/null -s https://www.sogo.com

            time_namelookup:  0.004
time_connect: 0.014
time_appconnect: 0.141
time_pretransfer: 0.141
time_redirect: 0.000
time_starttransfer: 0.153
----------
time_total: 0.165

  

  NAMELOOKUP:从开始计算,域名解析完成的耗时

  CURLINFO_NAMELOOKUP_TIME. The time it took from the start until the name resolving was completed.

  CONNECT:从开始计算,TCP建立完成的耗时

  CURLINFO_CONNECT_TIME. The time it took from the start until the connect to the remote host (or proxy) was completed.

  APPCONNECT:从开始计算,应用层(SSL,在TCP之上的应用层)连接/握手完成的耗时

  CURLINFO_APPCONNECT_TIME. The time it took from the start until the SSL connect/handshake with the remote host was completed. (Added in in 7.19.0)

  PRETRANSFER:从开始计算,准备开始传输数据的耗时

  CURLINFO_PRETRANSFER_TIME. The time it took from the start until the file transfer is just about to begin. This includes all pre-transfer commands and negotiations that are specific to the particular protocol(s) involved.

  STARTTRANSFER:从开始计算,开始传输数据的耗时(libcurl接收到第一个字节)

  CURLINFO_STARTTRANSFER_TIME. The time it took from the start until the first byte is received by libcurl.

  TOTAL:总的耗时

  CURLINFO_TOTAL_TIME. Total time of the previous request.

  REDIRECT:整个过程重定向的耗时,如果整个过程没有重定向,这个时间为0

举个实际的例子吧。 工作中有人反映,我们有个页面打开的非常慢,需要1份多钟。

进入我们自己服务的docker容器, curl  -v -w "@curl.txt" -o /dev/null -s  127.0.0.1:/xxx/xxx/x。发现时间主要在time_starttransfer之后,也就是time_total - time_starttransfer占了整个请求的大部分时间。

这也就基本定位是微服务自身的问题。  看日志,在读取文件列表时非常慢。

使用time ls -l和time tar -zxvf ***.tar.gz 和linux的dd命令发现文件读写非常慢。time 加到linux命令前,可以查看命令的执行时间。

联系持久卷nfs的同事,微小的网络延迟都会导致nfs读取速度很慢。这也是带延迟测试场景,实际场景中有延迟时要先解决延迟的问题。

Linux下使用curl查看http请求各阶段耗时的更多相关文章

  1. Linux下使用curl进行http请求(转)

    curl在Linux下默认已经安装,Windows需要自行安装. 下载地址:https://curl.haxx.se/download.html Windows离线版本:链接:http://pan.b ...

  2. 在Linux下用netstat查看网络状态、端口状态

    在Linux下用netstat查看网络状态.端口状态 在linux一般使用netstat 来查看系统端口使用情况步. netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实 ...

  3. Linux下的tree命令 --Linux下目录树查看

    Linux下的tree命令 --Linux下目录树查看 有时我们需要生成目录树结构,可以使用的有ls -R,但是实际效果并不好 这时需要用到tree命令,但是大部分Linux系统是默认不安装该命令的, ...

  4. (转)Linux下设置和查看环境变量

    原文地址:<Linux下设置和查看环境变量> Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1. 永久的:需要修改配置文件,变量永久生效. 2. 临时的:使用e ...

  5. Linux下jmap命令查看内存使用

    Linux下jmap命令查看内存使用 jmap -heap 1234(1234为进程号) jmap是JDK自带的一个工具,非常小巧方便,其支持参数如下: -heap       打印heap空间的概要 ...

  6. linux下通过进程名查看其占用端口

    linux下通过进程名查看其占用端口: 1.先查看进程pid ps -ef | grep 进程名 2.通过pid查看占用端口 netstat -nap | grep 进程pid 例:通过nginx进程 ...

  7. [转帖]linux下使用 du查看某个文件或目录占用磁盘空间的大小

    linux下使用 du查看某个文件或目录占用磁盘空间的大小 du -ah --max-depth= 去年用过一次 后来忘记了.. 命令这个东西 熟能生巧.. https://www.cnblogs.c ...

  8. Linux下用命令查看CPU ID以及厂家等信息

    Linux下用命令查看CPU ID // 获得CPU IDdmidecode -t 4 | grep ID |sort -u |awk -F': ' '{print $2}' // 获得磁盘IDfdi ...

  9. linux日常---1、linux下安装、查看、卸载包常用命令

    linux日常---1.linux下安装.查看.卸载包常用命令 一.总结 一句话总结: 对比学习 1.linux如何查看系统中安装的程序? rpm -qa   # 查看所有安装的软件包 2.linux ...

随机推荐

  1. hdu3336 Count the string 扩展KMP

    It is well known that AekdyCoin is good at string problems as well as number theory problems. When g ...

  2. JS 冒泡排序法 输出最大值

    <html lang="en-US"> <head> <meta charset="UTF-8"> <title> ...

  3. 【vue】遇到的问题

    [一]项目编译的时候报错 npm install npm WARN @mtfe/thrift@2.3.7 requires a peer of thrift@0.11.0 but none is in ...

  4. Centos7部署ntp服务器同步时间以及直接将本地时间同步为北京时间

    一.查看配置 查看时区列表: timedatectl list-timezones|grep Asia 查看当前时间: date 查看当前设置: [root@localhost ~]# timedat ...

  5. YII2常用知识点总结

    YII2常用知识点总结 (一)总结性语句 (1)经常看看yii源码比如vendor\yiisoft\yii2\web这个目录(很重要)下的文件中的方法(这些文件中的公共方法,大致看了下基本上都可以通过 ...

  6. sudo command

    sudo -i : login as sudo password: change the password of current login user exit : logout

  7. AI大牛阿里VP贾扬清

    贾扬清生长于浙江绍兴,2002年考入清华,并在清华拿到硕士学位,其后远赴UC伯克利获得博士学位. 2013年,贾扬清博士毕业加入之前就已实习了2年的Google,在Jeff Dean麾下任职,参与Te ...

  8. [转]MyBatis中resultType与resultMap区别

    MyBatis中关于resultType和resultMap的具体区别如下: MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap.resu ...

  9. 用react编写一个hello world

    我要分享的是用react搭建一个简单的hello world, 一个小demo, 大神请略过 首先看一下目录结构 创建一个目录, 用于存放demo mkdir reactHello cd reactH ...

  10. 代码风格统一工具:EditorConfig 和 静态代码检查工具:ESLint

    EditorConfig 最常见的用途是:统一文件的编码字符集以及缩进风格 使用 Eslint 做代码 lint,那么为什么还要使用 .editorconfig 呢?细细想了下,应该有两个方面吧. E ...