VPS 网络测试与长期监测

对于一台服务器，优质的线路能确保机器与本地网络连通的上限，由于网络环境的不同，同一台服务器的表现可能有明显差别，因此想要最好的体验，必须在本地进行 网络测试 、综合比较之下才能肯定，网络测试可以分为两类：

瞬时的测试，包含延迟、丢包、Jitter（抖动）、上下行带宽

长期的测试，可以从日、月、年的周期查看网络情况，包含延迟、丢包、Jitter（抖动）

下面是衡量网络情况的主要指标。

带宽（Bandwidth），指的是在特定时间范围内，从一点到另一点所能传输数据的最大速率，通常以比特每秒（bps）计量。较高的带宽意味着可以传输更多的数据，对于数据密集型服务尤为重要。

吞吐量（Throughput），指在单位时间内成功传输的数据量，它受限于网络的带宽和其它因素（比如错误率，指的是传输过程中由于噪声、干扰等原因造成的错误数据包比率）。

上下行带宽可以使用 iperf3 测试，或者使用操作更简单的 LibreSpeed

延迟（Latency），延迟表示数据从源头传送到目的地所需的时间，常以毫秒（ms）来度量。较低的延迟对于需要实时反应的应用（如在线游戏、语音或视频通话等）至关重要。

往返时间（Round Trip Time, RTT），往返时间是一个数据包从发送者发送到接收者，再从接收者返回发送者所需的总时间。

丢包率（Packet Loss Rate），丢包率是指从发送端到接收端过程中丢失的数据包比例。高丢包率可能导致网络连接不稳定，影响数据传输的完整性。

抖动（Jitter），指延迟的变化量，即数据包到达时间的不一致性。

可用性（Availability），指网络能够正常工作并提供服务的时间比率。高可用性意味着网络服务更加可靠，减少了停机时间。

延迟、丢包、抖动还是长期的数据更有价值，可以查看网络情况在一天中高峰期和低谷期的表现变化。可以使用 SmokePing 实现这一点。

根据具体的应用场景和需求，某些指标可能会比其他指标更加重要。例如，对于实时通讯，延迟和抖动的重要性要高于带宽；而对于文件传输，带宽和吞吐量则显得更为重要。

iPerf3

iPerf3 是专业的网络测试工具，它基于 TCP/IP 和 UDP/IP 协议，用以测量两个网络节点之间 TCP 和 UDP 端口的网络带宽，还能提供网络延迟、丢包率等统计信息。

iPerf3 在工作时，测试的两端一方作为 Server，另一方为 Client。程序启动的命令相同，通过不同的参数来区别以哪种工作方式运行。通常情况下先启动 Server 端，使 iPerf 监听在某个固定端口。然后在 Client 端执行相应的命令开始测试。

安装

在需要测试的两台机器上分别安装 iperf3。

所有平台的下载地址： iPerf - Download iPerf3 and original iPerf pre-compiled binaries

Windows 版的 iPerf 下载、解压后可以直接在命令提示符下运行。

Linux

Copy
sudo apt-get install -y iperf3

会询问，是否要作为守护进程，选否

这种命令在熟悉基本工作原理之后，不用搜索资料，直接看参数说明就够用

Copy
iperf3 --help

iPerf3 服务端使用

启动 iperf3 服务

Copy
iperf3 --server -i 10 -p 19302

-s, --server: 启动 iperf3 以作为服务器端运行

-i 10: 设置报告间隔为 10 秒，每 10 秒输出一次测试结果

-p 19302: 指定使用的端口号为 19302。可以根据需要更改此端口号

不能同时为多个客户端测

在后台运行，断开 SSH 也可以使用

Copy
iperf3 --server -D -i 10 -p 19302 --logfile ./iperf.log

-D, --daemon: 在后台以守护进程（daemon）模式运行 iperf3

--logfile ./iperf.log: 将 iperf3 的输出日志记录到指定路径下的文件./iperf.log中

iPerf3 客户端使用

运行 iperf3 ，上传数据到服务器进行测试，运行 60 秒

Copy
iperf3 --client 192.168.1.51 -p 19302 -t 60 -f M -P 1 --get-server-output

-c, --client 192.168.0.18: 连接到 IP 地址为 192.168.0.18 的服务器。

-p 19302: 指定使用的端口号为 19302。

-t 60: 设置测试持续时间为 60 秒。

-f M: 将带宽单位设置为兆字节（Mbps）。

-P 1: 使用 1 个并发连接进行测试。

--get-server-output: 获取服务器端的输出信息。

实际使用中，我习惯先配置变量，再测试，这样方便更改服务端 IP 和端口

Copy
server_ip=52.16.84.15
server_port=19302

Copy
iperf3 -c ${server_ip} -p ${server_port} -t 60 -f M -P 1 # 上传到服务端

这个命令与第一个命令类似，但是通过添加-R参数，它执行反向测试，即从服务器向客户端进行上传速度测试。

Copy
iperf3 -c ${server_ip} -p ${server_port} -t 60 -f M -P 1 -R # 从服务端下载

-R: 反向测试，即从服务器向客户端进行上传速度测试。相当于 客户端 下载时的速度

LibreSpeed

使用浏览器检测当前网络与 VPS 之间的下载速度、上传速度、ping、Jitter（抖动），任何有浏览器的设备都可以使用。

GitHub： librespeed/speedtest: Self-hosted Speedtest for HTML5 and more. Easy setup, examples, configurable, mobile friendly. Supports PHP, Node, Multiple servers, and more (github.com)

DockerHub：adolfintel/speedtest - Docker Image | Docker Hub ，根据上面项目构建的

需要提前安装 Docker，然后运行下面命令即可：

Copy
docker run -d -e MODE=standalone -p 88:80 -it --name speedtest adolfintel/speedtest:latest

访问 http://ip_addr:88 通过浏览器测本机网络与服务器网络的连接质量，将 ip_addr 替换为监控服务器的地址。

测试完后，停止容器，然后删除容器和镜像（478MB，为什么这么大 (〝▼皿▼) ）

Copy
docker stop speedtest && docker rm speedtest && docker rmi adolfintel/speedtest

SmokePing

SmokePing 是一款强大而灵活的网络延迟监测工具，且可在网页查看结果图。AhFei 在「随身服务器」上安装使用，不管去哪里，都能检测当前网络与 VPS 的网络状况。

官网： SmokePing - About SmokePing (oetiker.ch)
GitHub： oetiker/SmokePing: The Active Monitoring System (github.com)

linuxserver 构建的 Docker 镜像：

GitHub： linuxserver/docker-smokeping (github.com)

Dockerhub： linuxserver/smokeping - Docker Image | Docker Hub

不止是 Ping，SmokePing 实际能用很多工具测试网络，下面是常用的：

FPing: 也就是 ping，用于测量 ICMP Echo 请求的延迟，是最常见和默认的 probe。

EchoPingHttp: 与 FPing 类似，但它还可以测量 HTTP 请求的延迟。

SSH: 用于通过 SSH 连接到远程服务器，并测量连接的延迟。SSH 也可能被阻断，有时候 SSH 连不上，用的不是 22 端口，但网页可以流畅打开。

DNS: 用于测量 DNS 解析的延迟。

SMTP: 用于测量发送 SMTP 邮件的延迟。

TCP: 用于测量 TCP 端口的可用性和响应时间。

cURL：HTTP、HTTPS、FTP 等，且有更多自定义设置，请求头等。

FPing6: IPv6。

单机模式

安装步骤： 网络延迟监测工具 SmokePing 的安装与配置 - 技焉洲 (vfly2.com)

主从模式

主从模式下，从端不启动网页界面，可以同步主端的配置，在主端可以看到从端的测试结果。

使用说明： 基于 LinuxServer 镜像的 SmokePing 主从模式指南 - 技焉洲 (vfly2.com)

下面第二个 from Home to vfly2 就是部署在家庭服务器上的从 smokeping 监测的数据

原文链接： https://technique.vfly2.com/2023/07/vps-network-testing-long-term-monitoring/

版权声明：本博客所有文章除特別声明外，均为 AhFei 原创，采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 技焉洲 (technique.vfly2.com) 。

保持更新 ٩(・̤̀ᵕ・̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能，欢迎使用 RSS 订阅，或在支持 ActivityPub 的平台关注 @vfly2tech@technique.vfly2.com 接收新文章的推送，如果能留言互动就更好了。