我想测试从服务器 A 到服务器 B 的传输速度,但服务器 A 的磁盘空间有限(<50GB),并且由于同一数据中心内的网络速度很快,因此传输 50 GB 可能太快而无法用作基准。服务器B的磁盘空间基本上是无限的。
有没有办法从服务器 A 传输“文件”(例如,作为太大而无法在服务器 A 上容纳的数据流,例如 1 TB),以便我可以重复测试到服务器 B 的网络传输速度?
我想测试从服务器 A 到服务器 B 的传输速度,但服务器 A 的磁盘空间有限(<50GB),并且由于同一数据中心内的网络速度很快,因此传输 50 GB 可能太快而无法用作基准。服务器B的磁盘空间基本上是无限的。
有没有办法从服务器 A 传输“文件”(例如,作为太大而无法在服务器 A 上容纳的数据流,例如 1 TB),以便我可以重复测试到服务器 B 的网络传输速度?
要测试原始网络带宽,您可以使用
iperf
(或iperf3
)。您可以使用像以下这样简单的东西:iperf -s
iperf -c <server_ip>
要测试
rsync
传输速率(传输速率通常受到 SSH 加密/解密速度的限制),您可以创建一个稀疏源文件并将其同步到远程端。稀疏文件是一个标称大小比其实际分配大小更大的文件。您可以通过命令创建它truncate
。例如,
truncate --size=1T src.img
将创建一个 1 TB 大文件,该文件实际上分配 0 字节(或最多 1 个 512/4K 块,具体取决于文件系统) - 即:当读取和传输此类文件时,除非它由稀疏文件感知复制实用程序和/或压缩程序(如 )处理,否则它将扩展到其真实的标称大小
gzip
。使用( ) 和( ) 选项rsync
时可以“重新压缩”此类文件,但如果您忽略它们,它会很乐意传输并写入整个 1 TB 数据。-S
--sparse
-z
--compress
注意:
-z
将在传输过程中消除零,同时-S
将它们作为空洞写入目标文件中。我会使用网络带宽监控工具,例如 iperf3。您可以在任何主机上运行它的服务器实例,并从客户端决定您想要测量哪个方向的带宽。
在其中一台主机上将其用作服务器运行:
默认情况下,它将侦听端口 5201/tcp,因此需要其他主机允许。
在另一台机器上以最简单的形式测试 TCP 上行带宽:
其中 serveraddr 是运行 iperf3 服务器的计算机的 IP 地址(或主机名或 FQDN)。
要测试客户端的下行带宽,请执行以下操作:
两个方向:
iperf3 有大量选项来调整应传输的数据量、要使用的协议和端口等,您可以在服务器端“守护”它,使其始终在后台侦听客户端连接...是您
man iperf3
的朋友:-)iperf3 是开源的,它在大多数发行版中都可用,并且还可以下载适用于 Windows 和 MacOS 等的二进制文件
我发现它非常可靠(至少在 Linux 上)并且我一直使用它,不仅可以测量吞吐量,还可以查看哪里有丢包等。
这是主页: https: //software.es.net/iperf/
一种选择是从服务器 B 传输到服务器 A,并将文件直接放入
/dev/null
,尽管我还没有测试过这一点,而且我更喜欢服务器 A 而不是 B,因为服务器 A 只有 ssh 密钥,而服务器 B 允许通过密码进行 ssh 。