【问题标题】:Can I use curl real time minus sys and user to generally get total response time我可以使用 curl real time 减去 sys 和 user 来获得总响应时间吗
【发布时间】:2018-01-27 13:14:40
【问题描述】:

在 linux shell 脚本中,我正在针对 REST 服务的 curl 请求运行时间。

假设一个线程,如果我取结果的实时时间并减去用户和系统时间,剩余时间是否会被认为是网络延迟和服务完成请求所需时间的聚合?

如果没有,是否有一种简单的方法来获取服务完成来自 linux shell 的请求所需的网络延迟和时间?

参考:What do 'real', 'user' and 'sys' mean in the output of time(1)?

【问题讨论】:

    标签: linux curl time latency


    【解决方案1】:

    如果您使用curl,获取请求时间详细信息的最简单方法是使用-w/--write-out 选项。

    您可以格式化输出以包含以下变量:

    time_appconnect 从开始到完成与远程主机的 SSL/SSH/etc 连接/握手所用的时间,以秒为单位。 (7.19.0新增)

    time_connect 从开始到 TCP 连接到远程主机(或代理)完成所用的时间,以秒为单位。

    time_namelookup 从开始到名称解析完成所用的时间,以秒为单位。

    time_pretransfer 从开始到文件传输即将开始所用的时间,以秒为单位。这包括特定于所涉及的特定协议的所有预传输命令和协商。

    time_redirect 在开始最终事务之前,所有重定向步骤(包括名称查找、连接、预传输和传输)所用的时间(以秒为单位)。 time_redirect 显示多个重定向的完整执行时间。 (7.12.3新增)

    time_starttransfer 从开始到第一个字节即将被传输所用的时间,以秒为单位。这包括 time_pretransfer 以及服务器计算结果所需的时间。

    time_total 完整操作持续的总时间(以秒为单位)。时间将以毫秒分辨率显示。

    例如:

    $ curl httpbin.org/ip -s -o output -w 'dns: %{time_namelookup} sec\nconnect: %{time_connect} sec\nuntil first byte: %{time_starttransfer} sec\ntotal: %{time_total} sec\n'
    dns: 0.061 sec
    connect: 0.297 sec
    until first byte: 0.502 sec
    total: 0.502 sec
    

    回答您的直接问题 - 不,从挂钟时间中减去进程和进程内核时间通常不会给您网络延迟或响应时间。考虑有许多进程竞争 CPU 的系统:在这种情况下,curl 进程的挂钟可能比实际服务响应时间长得多。

    【讨论】:

      猜你喜欢
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 2012-05-03
      • 1970-01-01
      • 2016-06-20
      • 2016-07-13
      • 1970-01-01
      相关资源
      最近更新 更多