使用 Ping、Mtr 和 Smokeping 在 Linux 中监控网络延迟
网络延迟 是指数据在你的计算机与远程服务器之间传输所需的时间。高延迟可能导致网页浏览缓慢、游戏延时以及云服务延迟。如果你使用的是 Linux,你已经拥有了一些有用的工具,可以实时或长期地 测量和监控网络延迟。
在本指南中,我们将说明如何:
- 使用
ping进行简单的延迟测试 - 使用
mtr跟踪网络路径并检测问题节点 - 使用
smokeping绘制随时间变化的图表延迟
所有工具都是免费的,并且可在大多数 Linux 发行版上使用。
什么是网络延迟?
延迟通常以毫秒(ms)为单位进行测量。它表示一个小数据包从你的电脑出发,到达目标服务器并返回所需的往返时间。
常见延迟值:
- <30 毫秒: 优秀(局域网或光纤)
- 30-70 毫秒: 良好(普通宽带)
- 70-150 毫秒:可接受(有些延迟)
- >150 毫秒: 高延迟(可能影响性能)
使用 ping 命令测试网络延迟
测试延迟最简单的方法是使用ping命令。ping命令向目标(如网站或服务器)发送ICMP回显请求数据包,并测量往返时间(RTT)——收到响应所花费的时间。
ping 命令是一个用于测量 Linux 网络延迟的强大工具。通过分析 最小/平均/最大延迟、数据包丢失和抖动,您可以诊断连接问题。
基础示例:
ping google.com这会重复向 google.com 发送数据包。
你会看到类似这样的输出:
PING google.com(maa03s36-in-x0e.1e100.net (2404:6800:4007:814::200e)) 56 data bytes
64 bytes from maa03s36-in-x0e.1e100.net (2404:6800:4007:814::200e): icmp_seq=1 ttl=59 time=16.1 ms
64 bytes from maa03s36-in-x0e.1e100.net (2404:6800:4007:814::200e): icmp_seq=2 ttl=59 time=17.3 ms上述命令将会持续运行,直到你手动按 CTRL+C 停止它。
这里
time=16.1 ms:这是该数据包的延迟(毫秒)。- 数值越低越好。大多数互联网连接的典型值低于 100 毫秒。
只发送5次 Ping:
ping -c 5 google.com这会向 google.com 发送 5 个回显请求然后停止。输出显示每个回复的延迟。
PING google.com(maa03s36-in-x0e.1e100.net (2404:6800:4007:814::200e)) 56 data bytes
64 bytes from maa03s36-in-x0e.1e100.net (2404:6800:4007:814::200e): icmp_seq=1 ttl=59 time=15.4 ms
64 bytes from maa03s36-in-x0e.1e100.net (2404:6800:4007:814::200e): icmp_seq=2 ttl=59 time=16.3 ms
64 bytes from maa03s36-in-x0e.1e100.net (2404:6800:4007:814::200e): icmp_seq=3 ttl=59 time=17.2 ms
64 bytes from maa03s36-in-x0e.1e100.net (2404:6800:4007:814::200e): icmp_seq=4 ttl=59 time=18.2 ms
64 bytes from maa03s36-in-x0e.1e100.net (2404:6800:4007:814::200e): icmp_seq=5 ttl=59 time=69.2 ms
--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 15.362/27.250/69.246/21.019 ms这里,
time=15.4 ms是每个数据包的延迟。- 最后,你会得到 min/avg/max/mdev (最小值、平均值、最大值和标准偏差)。
ping 命令的摘要统计
--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 15.362/27.250/69.246/21.019 ms数据包传输统计:
已发送 5 个数据包:发送了 5 个 ICMP Echo 请求数据包。5 已接收:所有 5 个数据包都收到了响应(ICMP 回显应答)。0% 数据包丢失:没有丢失任何数据包(理想网络条件)。时间 4005毫秒:测试所花费的总时间(约4秒)。
往返时间 (RTT) 统计:
这显示了以毫秒(ms)为单位的延迟(延时):
最小(15.362 毫秒):最快的响应时间。avg(27.250 毫秒):平均响应时间(对一般延迟最重要)。max(69.246 毫秒):最慢的响应时间。mdev(21.019 毫秒):平均偏差(衡量抖动——延迟的变化)。
根据上述统计数据,我们可以得出以下结论:
- 您与 Google 的连接正常。
- 延迟大多很低,但存在一些抖动(变化)。
- 无数据包丢失——没有丢弃的数据包。
- 这对于上网浏览甚至视频通话来说都是可以接受的。
- 如果你看到频繁的高
mdev或packet loss,这是不稳定的迹象。
用于网络测试的高级 Ping 命令
A. 限制 Ping 数量 (-c)
ping -c 5 google.com # Sends only 5 packetsB. 修改数据包大小 (-s)
ping -s 1000 google.com # Sends 1000-byte packetsC. 更快的 Ping (-i)
ping -i 0.2 google.com # Sends a ping every 0.2 secondsD. 时间戳记录 (-D)
ping -D google.com >> ping_log.txt # Logs with timestampsE. 持续 Ping 监控
ping google.com # Runs until manually stopped (Ctrl+C)使用 mtr 分析网络延迟(Ping + 路由跟踪)
mtr 显示数据包如何通过网络传输。它结合了 ping 和 traceroute 的功能。对于不了解的人来说,mtr 代表 My traceroute。
您可以使用 mtr,当;
- 诊断连接缓慢,
- 找到网络故障点
- 发现跳点间歇性丢失。
在你的 Linux 系统上使用以下命令安装 mtr 工具:
sudo apt install mtr # Debian/Ubuntu
sudo dnf install mtr # Fedora现在使用命令分析网络延迟:
mtr google.com这显示了跳数、延迟和丢包的实时表格。
你也可以生成一份报告:
mtr -c 100 -r google.com > report.txt其他有用的选项:
-T:使用 TCP 而不是 ICMP-u:使用 UDP-c:要发送的数据包数量
使用 smokeping 监控网络延迟随时间变化
对于历史延迟跟踪,请使用 smokeping。它在后台运行并存储可以在浏览器中查看的图表。请注意,此工具需要像 Apache 或 Nginx 这样的 Web 服务器来查看图表。
Smokeping 有用的地方是,
- 长期监测
- 发现模式(例如,晚上放缓),
- 多个服务器监控。
要在基于 Debian 的系统上安装 smokeping,请使用以下命令:
sudo apt install smokeping apache2安装完成后,编辑 Targets 文件:
sudo nano /etc/smokeping/config.d/Targets添加一个类似的部分:
+ Google
menu = Google DNS
title = Google Ping
host = 8.8.8.8重新启动 smokeping 服务:
sudo systemctl restart smokeping然后,打开你的网页浏览器并导航到 http://localhost/smokeping。
你会看到延迟和丢包的图表。
点击左侧窗格中的每个链接以查看相应的图表。
高延迟与数据包丢失故障排除
如果你的 ping 结果显示高延迟或丢包,请尝试以下修复方法:
1. 检查您的互联网连接
- 重新启动你的路由器/调制解调器。
- 使用有线连接进行测试(Wi-Fi可能会引入延迟)。
2. 比较不同的目标
ping google.com
ping facebook.com如果只有一个网站延迟很高,问题很可能出在他们那一端。
3. 使用 Traceroute 查找网络跳数
traceroute google.com # Shows each hop’s latency在特定跳数出现高延迟?那就是瓶颈。
4. 检查 ISP 问题
如果多个网站延迟很高,请联系你的互联网服务提供商。
结论
一旦知道使用哪些工具,在 Linux 上测量网络延迟就很简单。首先使用 ping 进行快速测试。使用 mtr 排查特定路径的问题。如果你想要随时间变化的可视化报告,可以部署 smokeping。
使用这些工具,您可以:
- 检测缓慢或故障的网络链路,
- 证明问题出在你的互联网服务提供商(ISP)
- 监控随时间变化的延迟模式。
好了,就到这里。你使用哪些工具来测量和监控网络延迟?请在下方评论区分享。
相关阅读:
- 如何在 Linux 中使用 Sniffnet 轻松监控您的互联网流量
- 在 Linux 中使用 ping 命令输出打印时间戳
- 使用 Gping 以图形格式显示 Ping 命令输出
- Prettyping - 让 Ping 命令的输出更美观、更易读
- 如何在 Linux 中一次性 Ping 多个主机
- Ping 多个服务器并在类似 Top 的文本界面中显示输出
精选图片由 Pixabay 提供。

