惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 聂微东
GbyAI
GbyAI
G
Google Developers Blog
大猫的无限游戏
大猫的无限游戏
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 叶小钗
A
About on SuperTechFans
M
MIT News - Artificial intelligence
宝玉的分享
宝玉的分享
雷峰网
雷峰网
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Martin Fowler
Martin Fowler
Google DeepMind News
Google DeepMind News
博客园 - Franky
B
Blog RSS Feed
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
Last Week in AI
Last Week in AI
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
罗磊的独立博客
Apple Machine Learning Research
Apple Machine Learning Research

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
VPS 网络测试 与长期监测 - 少数派
2024-01-30 · via 少数派

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

  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 监测的数据


原文链接: 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 接收新文章的推送,如果能留言互动就更好了。