PsPing 学习笔记(14.5):TCP/UDP 带宽测试------吞吐上限与链路压测实战
- [PsPing 学习笔记(14.5):TCP/UDP 带宽测试------吞吐上限与链路压测实战](#PsPing 学习笔记(14.5):TCP/UDP 带宽测试——吞吐上限与链路压测实战)
-
- 一、带宽测试和延迟测试有什么不一样?
- 二、开启带宽测试前的前置条件
-
- [1. 远端开启服务器模式](#1. 远端开启服务器模式)
- [2. 本地做带宽测试的基础参数](#2. 本地做带宽测试的基础参数)
- [三、TCP 带宽测试:模拟"应用层大文件传输"](#三、TCP 带宽测试:模拟“应用层大文件传输”)
-
- [3.1 最基础的 TCP 带宽测试命令](#3.1 最基础的 TCP 带宽测试命令)
- [3.2 控制测试时长:用 `-n` + `-i`](#3.2 控制测试时长:用
-n+-i) - [3.3 如何解读 TCP 带宽结果?](#3.3 如何解读 TCP 带宽结果?)
- [四、UDP 带宽测试:压测"裸链路"的承载力](#四、UDP 带宽测试:压测“裸链路”的承载力)
-
- [4.1 远端开启 UDP 服务器](#4.1 远端开启 UDP 服务器)
- [4.2 本地执行 UDP 带宽测试](#4.2 本地执行 UDP 带宽测试)
- [4.3 UDP 带宽结果怎么看?](#4.3 UDP 带宽结果怎么看?)
- 五、带宽测试的"实验模板"(可直接写进你的博客)
-
- [Step 1:ICMP & TCP 基线](#Step 1:ICMP & TCP 基线)
- [Step 2:启动服务器模式](#Step 2:启动服务器模式)
- [Step 3:做带宽测试](#Step 3:做带宽测试)
- [Step 4:结果解读 & 报告要点](#Step 4:结果解读 & 报告要点)
- 六、脚本化:把带宽测试做成"日常巡检"
-
- [6.1 批处理示例(Windows)](#6.1 批处理示例(Windows))
- [6.2 PowerShell 多目标测试](#6.2 PowerShell 多目标测试)
- [七、压测注意事项 & 常见问题](#七、压测注意事项 & 常见问题)
-
- [7.1 可能影响业务](#7.1 可能影响业务)
- [7.2 带宽远低于"跑机房里写的标牌"](#7.2 带宽远低于“跑机房里写的标牌”)
- [7.3 UDP 带宽高但丢包多](#7.3 UDP 带宽高但丢包多)
- [八、小结:用 PsPing 搭好"网络实验室"的第二块砖](#八、小结:用 PsPing 搭好“网络实验室”的第二块砖)
PsPing 学习笔记(14.5):TCP/UDP 带宽测试------吞吐上限与链路压测实战
延迟看的是"快不快",带宽看的是"能拉多少货"。
这一篇我们用 PsPing 把"这条线到底能跑多快"说清楚。
前面几篇(14.1--14.4),我们用 PsPing 做了:
- ICMP / TCP "Ping" → 看 RTT、抖动
- 服务器模式 → 自建测试端点
- TCP/UDP 延迟测试 → 看的是 一小撮 包走得怎么样
本篇开始升维:用 PsPing 做 TCP/UDP 带宽测试,也就是:
- 这两台机器之间,理论上能跑多快?
- 网络/系统/应用到底谁是瓶颈?
- QoS、运营商、链路变更后,有没有"偷我带宽"?
一、带宽测试和延迟测试有什么不一样?
简单一句话:
- 延迟测试 :很多小包,轻轻敲门,看 每次往返 要多久
- 带宽测试 :猛拉数据,把水龙头开到底,看 单位时间 能灌多少
PsPing 在带宽模式下会:
- 持续发送(TCP/UDP)数据流,而不是只发几个 ping 包
- 统计:
- 总传输数据量
- 总耗时
- 平均带宽(Mbit/s)
- 在某些模式下提供延迟信息
注意:
带宽测试本身会 对链路施加压力 ,有可能影响业务。
生产环境一定要走:变更审批 + 低峰时段 + 范围可控 三连。
二、开启带宽测试前的前置条件
跟 14.4 的延迟测试一样,带宽测试也需要 服务器模式 配合。
1. 远端开启服务器模式
TCP 带宽测试:
bash
:: 远端服务器
psping -accepteula -s 5000
UDP 带宽测试:
bash
:: 远端服务器
psping -accepteula -s -u 5000
要求:
- 防火墙/安全组放行对应端口(TCP/UDP)
- 尽量选一个 闲置端口(不要跟线上业务抢)
2. 本地做带宽测试的基础参数
PsPing 的关键开关:
-b:带宽测试(bandwidth)-n:发送次数(在带宽模式下往往代表"多少个包/迭代")-i:间隔(秒),控制"打多猛"
三、TCP 带宽测试:模拟"应用层大文件传输"
3.1 最基础的 TCP 带宽测试命令
假设远端已经:
bash
psping -s 5000
本地可以跑:
bash
:: 对 192.168.10.10:5000 做 TCP 带宽测试
psping -b -n 10000 192.168.10.10:5000
常用写法解释:
-b:启用带宽模式-n 10000:发送 10000 个数据单元(内部会按固定大小的数据去冲)- 不指定
-i时,PsPing 会尽量"跑满"
输出里大致会看到:
- 连接成功统计(类似 ping)
- 总传输字节数
- 总耗时
- 平均带宽:
xxx Mbits/sec
你可以把这条命令当作 "快速估算 TCP 吞吐上限" 的第一招。
3.2 控制测试时长:用 -n + -i
有时候你不想暴力打太久,可以显式控制:
bash
:: 每 1ms 发一次,共发 10000 次,大概 10 秒级别的压测
psping -b -n 10000 -i 0.001 192.168.10.10:5000
或者:
bash
:: 稍微温柔一点,每 10ms 一发,总量 2000 次
psping -b -n 2000 -i 0.01 192.168.10.10:5000
粗略"时间估算"方法:
大致测试时长 ≈
n × i比如
-n 2000 -i 0.01≈ 20 秒
3.3 如何解读 TCP 带宽结果?
几个关键点:
-
平均带宽(Mbits/sec)
- 接近链路额定(例如千兆网约 900+ Mbit/s) → 网络部分还可以
- 远低于预期 → 可能是:
- 路径中有 100M/更低速率设备
- CPU / 磁盘 跟不上
- QoS / 限速策略在作怪
-
双向带宽要分开测
- A→B:在 A 上跑
psping,B 开服务器 - B→A:角色反过来
很多运营商/云链路是 上/下行不对称 的。
- A→B:在 A 上跑
-
测试前后对比
- 网络变更前后、迁移前后做两轮
- 日后写"变更复盘 / 性能报告"非常好用
四、UDP 带宽测试:压测"裸链路"的承载力
UDP 带宽测试,更接近"没有拥塞控制/重传"的纯链路行为。
对实时流媒体、自研协议等场景格外有参考价值。
4.1 远端开启 UDP 服务器
bash
:: 远端机器
psping -accepteula -s -u 5001
4.2 本地执行 UDP 带宽测试
bash
:: 本地机器
psping -u -b -n 10000 192.168.10.10:5001
注意两个开关一起出现:
-u:协议改为 UDP-b:带宽模式
你会得到类似输出:
- 发送包总数
- 接收包总数(从而能看出 丢包率)
- 总时间
- 平均带宽
4.3 UDP 带宽结果怎么看?
比 TCP 多看一个指标:丢包率。
- 带宽高,但丢包严重 → 对 TCP 类业务可能还有救(靠重传),
对语音/视频/游戏等实时业务会非常辣眼睛。 - 平均带宽不算极高,但丢包几乎为 0 → 对实时业务更友好。
小建议:
对 UDP 带宽测试,别一上来就
-n 100000 -i 0暴打,先用一组温和参数摸底,再慢慢加到你想要的压测强度。
五、带宽测试的"实验模板"(可直接写进你的博客)
可以给读者提供一个 完整示例,方便复制操作。
Step 1:ICMP & TCP 基线
bash
:: ICMP Ping(延迟基线)
psping -n 100 192.168.10.10 > icmp.txt
:: TCP Ping(端口延迟)
psping -n 100 192.168.10.10:5000 > tcp_ping.txt
Step 2:启动服务器模式
远端:
bash
:: TCP
psping -accepteula -s 5000
:: UDP
psping -accepteula -s -u 5001
Step 3:做带宽测试
本地:
bash
:: TCP 带宽(20 秒左右)
psping -b -n 2000 -i 0.01 192.168.10.10:5000 > tcp_bw.txt
:: UDP 带宽(20 秒左右)
psping -u -b -n 2000 -i 0.01 192.168.10.10:5001 > udp_bw.txt
Step 4:结果解读 & 报告要点
报告里可以这么写:
- ICMP 平均 RTT / 最大 RTT / 抖动区间
- TCP Ping vs ICMP 差异
- TCP 带宽(A→B、B→A)
- UDP 带宽 + 丢包率
- 测试时间、路径、运营商/网络区域信息
你的 CSDN 博客里可以配一张简单表格,把四项结果放一行对比,非常直观:
markdown
| 测试类型 | 平均延迟(ms) | 最大延迟(ms) | 带宽(Mbit/s) | 丢包率 |
|-----------|--------------|--------------|--------------|--------|
| ICMP Ping | 15 | 35 | --- | 0% |
| TCP Ping | 20 | 40 | --- | 0% |
| TCP 带宽 | --- | --- | 920 | 0% |
| UDP 带宽 | --- | --- | 950 | 0.5% |
六、脚本化:把带宽测试做成"日常巡检"
6.1 批处理示例(Windows)
bat
@echo off
set target=192.168.10.10:5000
set log=D:\netlog\tcp_bw_%date:~0,10%.log
echo ===== %date% %time% - Testing %target% ===== >> %log%
psping -q -b -n 2000 -i 0.01 %target% >> %log%
echo. >> %log%
特点:
- 使用
-q静默模式,只保留统计结果 - 可以配合系统计划任务,每天跑一次,形成历史带宽曲线
6.2 PowerShell 多目标测试
powershell
$targets = @(
"192.168.10.10:5000",
"192.168.20.10:5000"
)
foreach ($t in $targets) {
Write-Host "=== Bandwidth test for $t ==="
psping -q -b -n 1000 -i 0.01 $t
Write-Host ""
}
这个可以放到博客里作为"运维日常工具箱"的一部分,读者容易收藏。
七、压测注意事项 & 常见问题
7.1 可能影响业务
带宽测试本身可能:
- 抢占链路带宽 → 线上业务抖动、延迟上升
- 触发防火墙/IDS/IPS 告警(大流量+高频)
- 引起云账单高峰(按流量计费时)
推荐做法:
- 在维护窗口或低峰时段执行;
- 事先通知网络/安全团队;
- 控制测试时长和压力:先轻量,再逐步加压。
7.2 带宽远低于"跑机房里写的标牌"
比如:链路号称 1 Gbit/s,你测出来只有 200--300 Mbit/s。
排查方向:
- 两端网卡速率/双工模式是否到位(Auto/1000 Full)
- 中间交换机/路由器是否存在 100M 设备
- CPU、磁盘是否跟不上(尤其是虚机)
- QoS 限速策略(跨运营商/VPN/云环境尤为常见)
7.3 UDP 带宽高但丢包多
- 丢包不是"异常",而是你找到了链路的承载上限
- 实时业务需要的是:稳定、有余量的带宽 + 尽可能低的丢包
- 如果高负载下 UDP 丢包明显,考虑:
- 降低码率
- 增加冗余/纠错
- 做 QoS 保证
八、小结:用 PsPing 搭好"网络实验室"的第二块砖
这一篇,我们用 PsPing 的 -b 模式,把网络从"延迟好不好"扩展到"带宽够不够"。
你已经掌握了:
- TCP/UDP 带宽测试基本命令
- 如何控制测试时长和强度
- 如何解读平均带宽、丢包率和前后对比
- 如何用脚本做"日常带宽体检"
接下来,如果你愿意在博客里做一个 "网络体检全套模板" 专栏,把 14.0--14.5 串起来:
拿到一条链路 → 用 PsPing 做延迟 + 带宽全方位体检 → 输出一份标准化报告
这类内容对 CSDN 的"实战 + 工具类"读者特别友好,也很加分。