对于一台服务器,优质的线路能确保机器与本地网络连通的上限,由于网络环境的不同,同一台服务器的表现可能有明显差别,因此想要最好的体验,必须在本地进行 网络测试 、综合比较之下才能肯定,网络测试可以分为两类:
- 瞬时的测试,包含延迟、丢包、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 端口的网络带宽,还能提供网络延迟、丢包率等统计信息。
iPerf 常用的版本有 iPerf2 和 iPerf3。 iPerf3 在 iPerf2 的基础上新增了一些功能,例如发送方/接收方角色互换,以 JSON 格式输出结果,零拷贝方式传输数据等等。也去掉了 iPerf2 中所支持少许功能,例如双向测试等。它们的命令名称也不一样,iPerf3 为 iperf3,iPerf2 为 iperf。
iPerf3 在工作时,测试的两端一方作为 Server,另一方为 Client。程序启动的命令相同,通过不同的参数来区别以哪种工作方式运行。通常情况下先启动 Server 端,使 iPerf 监听在某个固定端口。然后在 Client 端执行相应的命令开始测试。
安装
在需要测试的两台机器上分别安装 iperf3。
所有平台的下载地址: iPerf – Download iPerf3 and original iPerf pre-compiled binaries
Windows 版的 iPerf 下载、解压后可以直接在命令提示符下运行。
Linux
sudo apt-get install -y iperf3
会询问,是否要作为守护进程,选否
这种命令在熟悉基本工作原理之后,不用搜索资料,直接看参数说明就够用
iperf3 --help
iPerf3 服务端使用
启动 iperf3 服务
iperf3 --server -i 10 -p 19302
-s, --server
: 启动iperf3以作为服务器端运行-i 10
: 设置报告间隔为10秒,每10秒输出一次测试结果-p 19302
: 指定使用的端口号为 19302。可以根据需要更改此端口号
不能同时为多个客户端测
在后台运行,断开 SSH 也可以使用
iperf3 --server -D -i 10 -p 19302 --logfile ./iperf.log
-D, --daemon
: 在后台以守护进程(daemon)模式运行iperf3--logfile ./iperf.log
: 将iperf3的输出日志记录到指定路径下的文件./iperf.log
中
iPerf3 客户端使用
运行 iperf3 ,上传数据到服务器进行测试,运行60秒
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 和端口
server_ip=52.16.84.15
server_port=19302
iperf3 -c ${server_ip} -p ${server_port} -t 60 -f M -P 1 # 上传到服务端
这个命令与第一个命令类似,但是通过添加-R
参数,它执行反向测试,即从服务器向客户端进行上传速度测试。
iperf3 -c ${server_ip} -p ${server_port} -t 60 -f M -P 1 -R # 从服务端下载
-R
: 反向测试,即从服务器向客户端进行上传速度测试。相当于 客户端 下载时的速度
LibreSpeed
使用浏览器检测当前网络与VPS之间的下载速度、上传速度、ping、Jitter(抖动),任何有浏览器的设备都可以使用。
DockerHub:adolfintel/speedtest – Docker Image | Docker Hub ,根据上面项目构建的
需要提前安装 Docker,然后运行下面命令即可:
docker run -d -e MODE=standalone -p 88:80 -it --name speedtest adolfintel/speedtest:latest
访问 http://ip_addr:88
通过浏览器测本机网络与服务器网络的连接质量,将 ip_addr
替换为监控服务器的地址。
测试完后,停止容器,然后删除容器和镜像(478MB,为什么这么大 (〝▼皿▼) )
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 监测的数据
smartping
首先用的这个项目监测延迟,但是已经不更新了,而且查看几十天的 ping 的可视图容易卡住,显示天数跟 CPU 性能有关(或许是内存),已经不再使用。
官网: http://smartping.org/
GitHub: https://github.com/smartping/smartping
原文链接: https://yanh.tech/2023/07/vps-network-testing-long-term-monitoring/
版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 技焉洲 (yanh.tech) 。
保持更新 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能,欢迎使用 RSS 订阅,或在支持 ActivityPub 的平台关注 @vfly2tech@yanh.tech
接收新文章的推送,如果能留言互动就更好了。
可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。
所谓「随身服务器」,就是一个机顶盒(如 UNT403A )刷成的 Armbian,4h2g,14g 存储,功耗 2-3W,可惜没有 WiFi,网口百兆,如下: