Linux ping 命令获取 rtt

Linux ping 命令获取 rtt

我是 Linux 新手,我正在尝试 ping 一个服务器,我想知道如何获取或计算 Linux 中往返时间 (RTT) 的中位数?

Ping 或 Packet Internet Groper 是一种网络管理实用程序,用于检查 IP 网络上源计算机/设备与目标计算机/设备之间的连接状态。它还可以帮助您评估发送和接收网络响应所需的时间。

$ ping -c 5 127.0.0.1

答案1

往返时间(RTT)是信号发送所需的时间加上致谢接收信号的时间。因此,该时间由两个信号点之间的传播时间组成。在互联网上,最终用户可以确定往返于 IP 的 RTT(互联网协议) 地址。结果取决于多种因素:-

1. The data rate transfer of the source’s internet connection.
2. The nature of transmission medium.
3. The physical distance between source and destination.
4. The number of nodes between source and destination.
5. The amount of traffic on the LAN(Local Area Network) to which end user is connected.
6. The number of other requests being handled by intermediate nodes and the remote server.
7. The speed with which intermediate node and the remote server function.
8.The presence of Interference in the circuit.
# This program is used to calculate RTT 

import time 
import requests 

# Function to calculate the RTT 
def RTT(url): 

    # time period when the signal is sent 
    t1 = time.time() 

    r = requests.get(url) 

    # time  period when acknowledgement of signal 
    # is received 
    t2 = time.time() 

    # total time taken during this process 
    tim = str(t2-t1) 

    print("Time in seconds :" + tim) 

# Pilot program 
# url address to hit
url = "http://www.google.com"
RTT(url) 

输出

Time in seconds :0.0579478740692

答案2

以下是如何使用以下命令从常规ping输出中获取中位数和第 95 百分位数 rtt数据混搭

ping -c 5 1.1.1.1 | sed -rn 's|.*=([0-9]+\.?[0-9]+?) ms|\1|p' | LC_ALL=C datamash median 1 perc 1

这将向 1.1.1.1 发送 5 个 echo 请求,过滤输出仅包含 rtt sed,然后用于datamash计算和输出中位数和第 95 个百分位数(尽管它还可以做更多,请参阅手动的)。

.如果您的语言环境中使用点作为小数点分隔符,则可以省略LC_ALL=C上述命令。

答案3

ping 的 iputils 实现仅总结了 RTT 的最小值、平均值、最大值和移动标准差. 不是百分位数或中位数,尽管它们很有用。

安装网络监控系统来测量 TCP 和 ICMP RTT,甚至可以更深入地了解您真正关心的用户响应时间。

尽管有许多 ping 实现,但似乎姆平有百分位数摘要选项。也许其他人也有。

相关内容