那么如何正确测试Ubuntu盒之间的网络速度?
#1 楼
我使用iperf
。这是一种客户端服务器配置,您可以在一端以服务器模式运行它,然后从网络另一端的另一台计算机连接到它。两台机器都运行:
sudo apt-get install iperf
我们将在一台计算机上启动
iperf
服务器:iperf -s
然后在另一台计算机上,告诉
iperf
作为客户端连接:iperf -c <address of other computer>
在客户端计算机上,您会看到类似以下内容:
oli@bert:~$ iperf -c tim
------------------------------------------------------------
Client connecting to tim, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.4 port 37248 connected with 192.168.0.5 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.04 GBytes 893 Mbits/sec
当然,如果您在服务器计算机上运行防火墙,则需要允许端口5001上的连接或使用
-p
标志更改端口。您如果您愿意,可以使用普通的旧版
nc
(netcat)执行几乎相同的操作。在服务器计算机上:nc -vvlnp 12345 >/dev/null
客户端可以通过
dd
隧道通过nc
传输1 GB的零。 > 如演示所示:
dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345
dd
给定了计时,但它应该足够准确,因为它只能以与管道一样快的速度输出。如果您不满意,可以将整个过程包装在一个time
调用中。请记住,结果以兆字节为单位,因此将其乘以8可得到每秒兆位的速度。上面的演示以944mbps的速度运行。
#2 楼
与Oli对iperf的建议相同。只是想添加几点:还有Windows客户端可以跨
平台进行测试。
-t <seconds>
更改测试长度。 -P <n>
更改同时连接的数量。例如,iperf -c [target IP] -P 10 -t 30
可以同时测试10个连接30秒,并给出汇总结果以及10种独立的连接速度。您不需要sudo。您可以直接从http://iperf.fr/下载二进制文件。它应该工作。使用
wget
下载它,使用chmod
使其可执行文件,您可以直接运行二进制文件。它运行完美。我发现,使用默认设置,单个连接速度会波动很多。但是,通过3个以上的并行连接,结果在我的千兆交换机上更加一致。 (始终@ 910-920Mbps)
#3 楼
使用此脚本,您可以轻松测试计算机与某个远程主机之间的连接速度。使用示例:
$ scp-speed-test.sh user@remote_host 80000
user@remote_host
是您的目标主机(您必须对此主机具有ssh-access )
80000
是测试文件的近似大小(以kbs为单位),将被接收到远程主机。它不是强制性参数。
评论
这似乎在测试SCP应用程序的速度,该速度将低于在较低层的测试速度。例如,nc使用L4。当然,如果您更关心SCP的速度,那就太好了。
– sudo
17年1月26日在22:55
有问题:此脚本在磁盘上读写文件-比ram慢,因此可能是人为的减速。也只发送零,以防万一它们被压缩了,这是很大的人工加速。如果您确实想要伪随机数据,请不要使用/ dev / random(它可能会阻止)或urandom(链接注释建议)它们也可能非常慢,而应使用dm-crypt(请参阅cryptsetup的常见问题解答2.19,我如何擦除设备具有加密级别的随机性?)也许带有ram中的文件。
– Xen2050
18-2-20在23:20
#4 楼
以下命令不需要其他程序包,但需要SSH访问权限:ssh username@myserver.example.com 'dd if=/dev/zero bs=1GB count=3 2>/dev/null' | dd of=/dev/null status=progress
示例输出:
2992238080 bytes (3.0 GB) copied, 27.010250 s, 111 MB/s
5859375+0 records in
5859375+0 records out
3000000000 bytes (3.0 GB) copied, 27.1943 s, 110 MB/s
该命令将一个完整的零的3GB(1000 ^ 3字节)虚假文件打印到远程服务器上的stdout,该文件通过SSH打印(传输)到本地服务器的stdout,然后在本地通过管道传输到
/dev/null
(即忽略)。您甚至可以在执行测试时看到测试的进度。当然不如其他工具那么精确,但我的用例是调试一个备份过程,在此过程中我想测试网络速度是否是问题所在。安装其他软件包。
#5 楼
如果要在较低级别测试以太网LAN,则可以使用Etherate,它是免费的Linux CLI以太网测试工具:https://github.com/jwbensley/Etherate
将它像iPerf之类的工具(非常好!)一起通过IP和TCP或UDP运行。直接在以太网/ OSI第2层上进行以太网测试。
#6 楼
还有一些其他不错的命令行工具可用于在两个主机之间进行带宽基准测试:nuttcp
server$ nuttcp -S
client$ nuttcp -v -v -i1 1.1.1.1 ;# 1.1.1.1 is server's address
nepim
server$ nepim
client$ nepim -d -c 1.1.1.1 ;# 1.1.1.1 is server's address
goben
server$ goben
client$ goben -hosts 1.1.1.1 ;# 1.1.1.1 is server's address
评论
这些彼此之间以及与iperf有什么不同?它们的工作原理相同吗? nuttcp在Debian中,显然是“ nuttcp基于nttcp,这反过来又是Silicon Graphics(SGI)的某人对原始ttcp的增强,该原始ttcp是由1984年12月之前由BRL的Mike Muuss编写的,目的是比较UC Berkeley和BBN的TCP堆栈可帮助DARPA决定在第一个BSD Unix版本中放置哪个版本。”
– Xen2050
18-2-20在23:28
#7 楼
正如我在最佳答案中指出的那样,该解决方案还不够好,因为客户端/服务器没有经过优化以……挤压每一点速度我的解决方案:
在两面都制作一个ramdisk(因此,您不受存储速度的限制,我建议您使用ramfs而不是tmpfs来制作它们,因此它们不会进行交换...请注意至少不要离开512M的系统可用内存,如果您具有千兆以太网,则需要此空间,以这种速度,即使SSD也会使速度变慢)
在服务器上安装apache,然后创建到ramdisk的链接,在ramdisk上创建一些大文件(100M- 1G,您可以从/ dev / random中用dd创建它们,或者如果需要的话用dd复制)。然后转到客户端,并使用高级下载程序将它们下载(也位于该端的ramdisk上),我用
lftp
好吧,差异很大,从iperf报告的75mbps和9.5M / s netcat
到我的解决方案为11.18M / s:
1591129421 bytes transferred in 136 seconds (11.18M/s)
评论
950万* 8 = 76 mbps;它非常接近75 mbps
– Fusca软件
19年6月21日在14:16
#8 楼
轻松将计算机插入第一个盒子,将另一个盒子插入第一个盒子。然后在计算机上ping第一个框,保存结果,ping另一个框并进行减法。评论
这表明网络延迟只是速度的一部分。例如,我手机的3G连接具有巨大的延迟(100-300ms),但仍可以管理5mbps的吞吐量。
–奥利♦
10-10-17在17:18
如果他问速度但想要吞吐量,这不是我的错。
–纳米欧(Gamanthrope)
17年12月7日在17:48
延迟是反应时间,而不是速度。
– wullxz
18年4月25日在10:01
评论
伙计,您对我的问题都有所有答案!我的网络显然没有建立好,而您的传输仅以714 MBytes和598 Mbit / sec的带宽传输。 Dunno可能会在将来进行调查。谢谢。
–雅各布·斯科恩(Jacob Schoen)
10-10-17在17:24
公平地讲,另一个盒子只有一个开关(和20米长的cat5e),并且没有拥塞。 600mbps仍然相当快。
–奥利♦
2010-10-17 17:33
很好,但是我没有对该服务器的root访问权限。
– Geoff
13年12月30日在20:59
尝试-P10。我的单连接结果类似于jschoens,但有3个以上并行连接,它的速度始终达到920Mbps。
– wujj123456
14年5月14日在7:38
@CMCDragonkai您可能不应该测试不是您自己的资源。带宽繁重的测试可能会影响短期稳定性。
–奥利♦
16年2月5日在16:37