虚拟机带宽测试想准确测量实际网速,不能只看虚拟机里的 speedtest 结果,要先排除宿主机物理网卡瓶颈,再用 iperf3 做内网双向吞吐测试,同时监控 CPU、磁盘和虚拟化类型,才能拿到可信数据。 以下步骤适用于本地虚拟机、云服务器和机房设备,按模块操作即可。
为什么虚拟机测速不准?先搞懂虚拟网卡和宿主机的关系
虚拟机的网络数据包要走虚拟交换机,再经过宿主机物理网卡,物理网卡速度决定了上限,虚拟网卡驱动和模式决定损耗。
- 桥接模式:虚拟机直接使用物理网卡,性能接近真实。
- NAT模式:流量需要宿主机转发,CPU负担大,速度波动明显。
- 仅主机模式:不经过物理网卡,只能测虚拟机之间或虚拟机与宿主机的通信带宽。
行业共识认为,半虚拟化网卡(如 virtio)性能远高于模拟网卡,不少跑不满 1Gbps 的虚拟机,问题出在默认使用了 e1000 模拟网卡,普通用户用默认配置新建虚拟机时,虚拟网卡可能是 e1000 或 vmxnet3,前者单队列且中断开销大,想准确测量,先确认驱动类型和队列数量。
虚拟机带宽测试怎么测才准?核心参数和测试原则
不要用单线程跑满整个带宽,iperf3 默认单线程,对 CPU 性能要求极高,服务端或客户端核数不足,结果会明显偏低,准确测试要遵循三个原则:
- 用至少 4 个并行线程测试。
- 双向测试,避免只测下行或上行。
- 重复测试 3 次以上,去掉最大和最小值,取中位值。
测试环境准备
关闭虚拟机内不必要的应用,禁止 Windows 自动更新,关闭防火墙或放行 iperf3 端口,宿主机上不要跑大流量任务,测试机之间最好处于同一二层网络,跨路由测试会引入延迟和丢包干扰。
双向测试命令
服务端执行 iperf3 -s 监听 5201 端口,客户端执行 iperf3 -c 192.168.1.10 -P 4 -t 30 测试下行,再执行 iperf3 -c 192.168.1.10 -P 4 -t 30 -R 测试反向传输,注意 -R 是反方向,不是同时双向。
虚拟机 iperf3 测速命令到底怎么用?参数详解
以下是实际可用的参数组合:
-c 目标IP:指定服务器地址。-P 4:4 个并行流。-t 30:持续 30 秒。-R:反向模式,由服务端向客户端发送数据。-u:UDP 测试,适合看丢包和抖动。
UDP 测试时发送带宽要手动指定,iperf3 -u -c 目标IP -b 1G,否则跑不满,TCP 测试结果如果接近网卡理论值,说明网络配置没问题。
云服务器带宽测试价格会影响实测结果吗?成本和地域考量
先明确一点:云服务器的带宽计费模式直接影响测速结果,按固定带宽计费实例,测速通常能跑满标称值;按流量计费实例,基础带宽上限可能很低,实际速度受账单和突发限制。
据工信部公开信息,国内云服务商的带宽资费差异主要在运营商线路和地域节点,华东跨华北测试时,延迟和丢包率会显著影响吞吐量,测试时应该选择和目标用户相同地域的节点,比如业务在广东,就用华南机房的机器对测。
测试流量会不会额外收费
iperf3
跑满 1Gbps 一小时产生约 450GB 流量,按流量计费的云主机,测一次 30 秒也能消耗 3-4GB 流量,业内专家指出,测速前先看带宽计费模式,否则月底账单会让人措手不及,本地虚拟机的测试成本几乎为零,但云主机测试会产生流量费,费用不透明时,先用小流量验证,-t 10 -P 2 跑 10 秒,估算单次测试消耗。
虚拟机测速速度上不去?CPU、网卡队列和磁盘都要查
多数情况下,虚拟机带宽测试结果低于标称值不是网络问题,而是计算资源受限。
CPU 核数不够,带宽跑不满
iperf3 客户端和服务端都需要 CPU 处理中断和 TCP 协议栈,单核虚拟机跑 1Gbps 很容易出现 CPU 100% 占用,结果只有 300-500Mbps,建议测试机器至少分配 2 核,高性能场景用 4 核。
网卡多队列是否开启
virtio 网卡默认支持多队列,但要确认队列数量等于 vCPU 数量,在 Linux 虚拟机内执行 ethtool -l ens3 查看,Combined 最大值只有 1,说明没有配置多队列,需要在 QEMU 或云平台设置中开启。
磁盘 I/O 拉低大文件传输速度
测带宽时如果同时写入磁盘,比如用 scp 或 dd 生成文件,磁盘也成了瓶颈,分离测试:先用 iperf3 占满带宽,再用 iperf3 -F 指定文件测试真实传输速率,机械硬盘的随机写入可能让结果暴跌到几十 MB/s,而 NVMe 固态则不太会拖后腿。
虚拟化类型影响
KVM 和 Xen 的性能差异在多数场景下不大,但 VMware Workstation 默认的 NAT 模式有较大封装开销,测试前把虚拟网卡改成桥接模式,能更接近裸机性能。
物理网卡和交换机也要检查
宿主机网卡是否协商到正确速率,用 ethtool eth0 查看 Speed,如果显示 100Mb/s 而交换机端口支持 1000Mb/s,多半是网线或协商问题,交换机的端口流控或端口限速策略也会拉低实测带宽。
常见问题:虚拟机带宽测试到底准不准?
虚拟机测出 100Mbps,实际真能跑 100Mbps 吗?
不能直接这么说,iperf3 测出的 100Mbps 是虚拟机网络栈在当前配置下的最大吞吐,不代表用户从外网访问时的实际体验,外网实际速度还要经过公网路由、CDN 和运营商限速,只有同时在内网测 iperf3、外网测 speedtest,交叉验证后才能判断虚拟机性能真实值。
为什么 iperf3 测出来比 speedtest 高很多?
这是正常现象,iperf3 在局域网内测试,网络延时低、无丢包;speedtest 连的是公共测速节点,受运营商跨网带宽和路由调度影响,例如国内宽带运营商访问境外测速节点,结果可能只有 iperf3 的十分之一,测外网带宽时,要选距离近的节点,多次测试取中间值。
虚拟机带宽测试时 CPU 100% 怎么办?
先降低并行线程数,或者改用 UDP 测试模式,TCP 单线程也能打满 CPU,说明虚拟 CPU 资源确实不足,升级 vCPU 配额,或者在宿主机上减少其他虚拟机抢占,另外检查网卡中断是否集中在一个 CPU 核心,开启 irqbalance 服务可缓解。
虚拟机带宽测试准确测量实际网速,不是跑一个命令就能完成的事,用 iperf3 双向测试,配合资源监控和网络拓扑确认,才能得到接近真实环境的数值,记住测试结果只代表当前环境的最优情况,生产环境还要预留冗余余量。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/754980.html





