• curl 分析 http 请求 rt时间延迟


    curl 分析 http 请求 rt时间延迟

    20190905 Chenxin

    curl发送post请求,统计各阶段的响应时间(rt值,response time)

    命令格式

    curl -o /dev/null -s -w %{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%{speed_download}"
    " -d  "param1=value1&param2=value2" "http://47.56.108.137:8080/index"
    或
    curl -o /dev/null -s -w %{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%{speed_download}"
    " "http://47.56.108.137:8080/index"
    或(推荐)
    curl -o /dev/null -s -w 'time_namelookup: %{time_namelookup}
    time_connect: %{time_connect}
    time_starttransfer: %{time_starttransfer}
    time_total: %{time_total}
    ' 47.56.108.137:8080/index #每个解释一个换行.
    
    或(推荐)
    curl -o /dev/null -s -w 'time_namelookup: %{time_namelookup}
    time_connect: %{time_connect}
    time_starttransfer: %{time_starttransfer}
    time_total: %{time_total}
    ' www.baidu.com
    

    -o:把curl返回的html,js写到/dev/null
    -s:去掉所有状态
    -w:按照后面的格式写出rt
    time_namelookup: DNS 解析域名[www.taobao.com]的时间
    time_commect: client和server端建立TCP 连接的时间
    time_starttransfer: 从client发出请求;到web的server 响应第一个字节的时间
    time_total: client发出请求;到web的server发送会所有的相应数据的时间
    speed_download: 下载速度 单位 byte/s
    : 输出结果后回车(后面无需空格,加空格也可以)

    结果

    0.005096::0.045880::0.089548::0.089726::144.000
    time_namelookup  time_commect    time_starttransfer      time_total     speed_download
    DNS             tcp建立连接         server响应第一个字节    server返回所有数据    下载速度
    这里可以优化(用IP)  物理距离导致(40ms)   服务器处理时间(45ms)    服务器处理时间(几乎0ms) 带宽
    

    针对以上时间,比如第二列时间,是包含了第一列的时间的.

    curl其他典型示例

    等待以后慢慢添加

    curl参数解析.以下部分可以不看(为指令自身参数说明,请通过指令自身输出查看)

    • 完整参数
      curl --help

    • 指令与参数解析
      curl --manual
      包含了 -w 的各个子参数解析说明

    -w, --write-out <format>
                  Make curl display information on stdout after a completed trans-
                  fer. 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 %{variable_name} and to output  a
                  normal  % you just write them as %%. You can output a newline by
                  using 
    , a carriage return with 
     and a tab space with 	.
    
                  NOTE: The %-symbol is a special symbol in the win32-environment,
                  where  all  occurrences  of  %  must  be doubled when using this
                  option.
    
                  The variables available are:
    
                  content_type   The Content-Type of the  requested  document,  if
                                 there was any.
    
                  filename_effective
                                 The  ultimate  filename  that curl writes out to.
                                 This is only meaningful if curl is told to  write
                                 to  a  file  with  the  -O,  --remote-name or -o,
                                 --output option. It's most useful in  combination
                                 with  the -J, --remote-header-name option. (Added
                                 in 7.26.0)
    
                  ftp_entry_path The initial path curl ended up in when logging on
                                 to the remote FTP server. (Added in 7.15.4)
    
                  http_code      The numerical response code that was found in the
                                 last retrieved HTTP(S)  or  FTP(s)  transfer.  In
                                 7.18.2  the alias response_code was added to show
                                 the same info.
    
                  http_connect   The numerical code that was  found  in  the  last
                                 response   (from  a  proxy)  to  a  curl  CONNECT
                                 request. (Added in 7.12.4)
    
                  http_version   The  http  version  that  was  effectively  used.
                                 (Added in 7.50.0)
    
                  local_ip       The  IP  address  of  the  local  end of the most
                                 recently done connection - can be either IPv4  or
                                 IPv6 (Added in 7.29.0)
    
                  local_port     The  local  port number of the most recently done
                                 connection (Added in 7.29.0)
    
                  num_connects   Number of new connects made in the recent  trans-
                                 fer. (Added in 7.12.3)
    
                  num_redirects  Number  of  redirects  that  were followed in the
                                 request. (Added in 7.12.3)
    
                  proxy_ssl_verify_result
                                 The result of the HTTPS proxy's SSL peer certifi-
                                 cate verification that was requested. 0 means the
                                 verification was successful. (Added in 7.52.0)
    
                  redirect_url   When an HTTP request was made without -L to  fol-
                                 low redirects, this variable will show the actual
                                 URL a redirect  would  take  you  to.  (Added  in
                                 7.18.2)
    
                  remote_ip      The  remote  IP address of the most recently done
                                 connection - can be either IPv4 or IPv6 (Added in
                                 7.29.0)
    
                  remote_port    The  remote port number of the most recently done
                                 connection (Added in 7.29.0)
    
                  scheme         The URL scheme (sometimes called  protocol)  that
                                 was effectively used (Added in 7.52.0)
    
                  size_download  The total amount of bytes that were downloaded.
    
                  size_header    The total amount of bytes of the downloaded head-
                                 ers.
    
                  size_request   The total amount of bytes that were sent  in  the
                                 HTTP request.
    
                  size_upload    The total amount of bytes that were uploaded.
    
                  speed_download The average download speed that curl measured for
                                 the complete download. Bytes per second.
    
                  speed_upload   The average upload speed that curl  measured  for
                                 the complete upload. Bytes per second.
    
                  ssl_verify_result
                                 The  result of the SSL peer certificate verifica-
                                 tion that was requested. 0 means the verification
                                 was successful. (Added in 7.19.0)
    
                  time_appconnect
                                 The  time,  in  seconds,  it  took from the start
                                 until the SSL/SSH/etc  connect/handshake  to  the
                                 remote host was completed. (Added in 7.19.0)
    
                  time_connect   The  time,  in  seconds,  it  took from the start
                                 until the TCP connect  to  the  remote  host  (or
                                 proxy) was completed.
    
                  time_namelookup
                                 The  time,  in  seconds,  it  took from the start
                                 until the name resolving was completed.
    
                  time_pretransfer
                                 The time, in seconds,  it  took  from  the  start
                                 until  the file transfer was just about to begin.
                                 This includes all pre-transfer commands and nego-
                                 tiations that are specific to the particular pro-
                                 tocol(s) involved.
    
                  time_redirect  The time, in seconds, it took for all redirection
                                 steps including name lookup, connect, pretransfer
                                 and transfer before  the  final  transaction  was
                                 started.  time_redirect shows the complete execu-
                                 tion time for multiple  redirections.  (Added  in
                                 7.12.3)
    
                  time_starttransfer
                                 The  time,  in  seconds,  it  took from the start
                                 until the first byte was just about to be  trans-
                                 ferred.  This  includes time_pretransfer and also
                                 the time  the  server  needed  to  calculate  the
                                 result.
    
                  time_total     The  total time, in seconds, that the full opera-
                                 tion lasted.
    
                  url_effective  The URL that was fetched last. This is most mean-
                                 ingful  if  you've  told curl to follow location:
                                 headers.
    
                  If this option is used several times, the last one will be used.
    
    

    • 常用参数
    -A/--user-agent <string>              设置用户代理发送给服务器
    -b/--cookie <name=string/file>    cookie字符串或文件读取位置
    -c/--cookie-jar <file>                    操作结束后把cookie写入到这个文件中
    -C/--continue-at <offset>            断点续转
    -D/--dump-header <file>              把header信息写入到该文件中
    -e/--referer                                  来源网址
    -f/--fail                                          连接失败时不显示http错误
    -o/--output                                  把输出写到该文件中
    -O/--remote-name                      把输出写到该文件中,保留远程文件的文件名
    -r/--range <range>                      检索来自HTTP/1.1或FTP服务器字节范围
    -s/--silent                                    静音模式。不输出任何东西
    -T/--upload-file <file>                  上传文件
    -u/--user <user[:password]>      设置服务器的用户和密码
    -w/--write-out [format]                什么输出完成后
    -x/--proxy <host[:port]>              在给定的端口上使用HTTP代理
    -#/--progress-bar                        进度条显示当前的传送状态
    

    其他参数

    -a/--append                        上传文件时,附加到目标文件
    --anyauth                            可以使用“任何”身份验证方法
    --basic                                使用HTTP基本验证
    -B/--use-ascii                      使用ASCII文本传输
    -d/--data <data>                  HTTP POST方式传送数据
    --data-ascii <data>            以ascii的方式post数据
    --data-binary <data>          以二进制的方式post数据
    --negotiate                          使用HTTP身份验证
    --digest                        使用数字身份验证
    --disable-eprt                  禁止使用EPRT或LPRT
    --disable-epsv                  禁止使用EPSV
    --egd-file <file>              为随机数据(SSL)设置EGD socket路径
    --tcp-nodelay                  使用TCP_NODELAY选项
    -E/--cert <cert[:passwd]>      客户端证书文件和密码 (SSL)
    --cert-type <type>              证书文件类型 (DER/PEM/ENG) (SSL)
    --key <key>                    私钥文件名 (SSL)
    --key-type <type>              私钥文件类型 (DER/PEM/ENG) (SSL)
    --pass  <pass>                  私钥密码 (SSL)
    --engine <eng>                  加密引擎使用 (SSL). "--engine list" for list
    --cacert <file>                CA证书 (SSL)
    --capath <directory>            CA目   (made using c_rehash) to verify peer against (SSL)
    --ciphers <list>                SSL密码
    --compressed                    要求返回是压缩的形势 (using deflate or gzip)
    --connect-timeout <seconds>    设置最大请求时间
    --create-dirs                  建立本地目录的目录层次结构
    --crlf                          上传是把LF转变成CRLF
    --ftp-create-dirs              如果远程目录不存在,创建远程目录
    --ftp-method [multicwd/nocwd/singlecwd]    控制CWD的使用
    --ftp-pasv                      使用 PASV/EPSV 代替端口
    --ftp-skip-pasv-ip              使用PASV的时候,忽略该IP地址
    --ftp-ssl                      尝试用 SSL/TLS 来进行ftp数据传输
    --ftp-ssl-reqd                  要求用 SSL/TLS 来进行ftp数据传输
    -F/--form <name=content>        模拟http表单提交数据
    -form-string <name=string>      模拟http表单提交数据
    -g/--globoff                    禁用网址序列和范围使用{}和[]
    -G/--get                        以get的方式来发送数据
    -h/--help                      帮助
    -H/--header <line>              自定义头信息传递给服务器
    --ignore-content-length        忽略的HTTP头信息的长度
    -i/--include                    输出时包括protocol头信息
    -I/--head                      只显示文档信息
    -j/--junk-session-cookies      读取文件时忽略session cookie
    --interface <interface>        使用指定网络接口/地址
    --krb4 <level>                  使用指定安全级别的krb4
    -k/--insecure                  允许不使用证书到SSL站点
    -K/--config                    指定的配置文件读取
    -l/--list-only                  列出ftp目录下的文件名称
    --limit-rate <rate>            设置传输速度
    --local-port<NUM>              强制使用本地端口号
    -m/--max-time <seconds>        设置最大传输时间
    --max-redirs <num>              设置最大读取的目录数
    --max-filesize <bytes>          设置最大下载的文件总量
    -M/--manual                    显示全手动
    -n/--netrc                      从netrc文件中读取用户名和密码
    --netrc-optional                使用 .netrc 或者 URL来覆盖-n
    --ntlm                          使用 HTTP NTLM 身份验证
    -N/--no-buffer                  禁用缓冲输出
    -p/--proxytunnel                使用HTTP代理
    --proxy-anyauth                选择任一代理身份验证方法
    --proxy-basic                  在代理上使用基本身份验证
    --proxy-digest                  在代理上使用数字身份验证
    --proxy-ntlm                    在代理上使用ntlm身份验证
    -P/--ftp-port <address>        使用端口地址,而不是使用PASV
    -Q/--quote <cmd>                文件传输前,发送命令到服务器
    --range-file                    读取(SSL)的随机文件
    -R/--remote-time                在本地生成文件时,保留远程文件时间
    --retry <num>                  传输出现问题时,重试的次数
    --retry-delay <seconds>        传输出现问题时,设置重试间隔时间
    --retry-max-time <seconds>      传输出现问题时,设置最大重试时间
    -S/--show-error                显示错误
    --socks4 <host[:port]>          用socks4代理给定主机和端口
    --socks5 <host[:port]>          用socks5代理给定主机和端口
    -t/--telnet-option <OPT=val>    Telnet选项设置
    --trace <file>                  对指定文件进行debug
    --trace-ascii <file>            Like --跟踪但没有hex输出
    --trace-time                    跟踪/详细输出时,添加时间戳
    --url <URL>                    Spet URL to work with
    -U/--proxy-user <user[:password]>  设置代理用户名和密码
    -V/--version                    显示版本信息
    -X/--request <command>          指定什么命令
    -y/--speed-time                放弃限速所要的时间。默认为30
    -Y/--speed-limit                停止传输速度的限制,速度时间'秒
    -z/--time-cond                  传送时间设置
    -0/--http1.0                    使用HTTP 1.0
    -1/--tlsv1                      使用TLSv1(SSL)
    -2/--sslv2                      使用SSLv2的(SSL)
    -3/--sslv3                      使用的SSLv3(SSL)
    --3p-quote                      like -Q for the source URL for 3rd party transfer
    --3p-url                        使用url,进行第三方传送
    --3p-user                      使用用户名和密码,进行第三方传送
    -4/--ipv4                      使用IP4
    -6/--ipv6                      使用IP6
    
  • 相关阅读:
    jflex词法分析器学习笔记
    解决双系统耳机无声音的问题
    win7 x64驱动开发经验(三)windbg 双机调试配置 、问题及解决办法
    addr和offset
    MFC命令更新机制
    win7 64位驱动开发 经验(1)
    透明位图的显示 作者:王骏
    CString ,string, char* 的转换及综合比较
    SPS编辑页面布局的一个小问题
    哈希表的建立、查找。
  • 原文地址:https://www.cnblogs.com/chanix/p/12743938.html
Copyright © 2020-2023  润新知