AhFei

AhFei

简洁的写作需要勇气

VPS 网络测试与长期监测

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

  1. 瞬时的测试,包含延迟、丢包、Jitter(抖动)、上下行带宽
  2. 长期的测试,可以从日、月、年的周期查看网络情况,包含延迟、丢包、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

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(抖动),任何有浏览器的设备都可以使用。

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,然后运行下面命令即可:

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

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

image.png

测试完后,停止容器,然后删除容器和镜像(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 镜像:

image.png

image.png

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

  1. FPing: 也就是 ping,用于测量 ICMP Echo 请求的延迟,是最常见和默认的 probe。
  2. EchoPingHttp: 与 FPing 类似,但它还可以测量 HTTP 请求的延迟。
  3. SSH: 用于通过 SSH 连接到远程服务器,并测量连接的延迟。SSH 也可能被阻断,有时候 SSH 连不上,用的不是 22 端口,但网页可以流畅打开。
  4. DNS: 用于测量 DNS 解析的延迟。
  5. SMTP: 用于测量发送 SMTP 邮件的延迟。
  6. TCP: 用于测量 TCP 端口的可用性和响应时间。
  7. cURL:HTTP、HTTPS、FTP 等,且有更多自定义设置,请求头等。
  8. FPing6: IPv6。

单机模式#

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

主从模式#

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

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

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

image


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

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

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

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。