it-swarm.cn

你如何测试两个盒子之间的网络速度?

我家里有一个千兆网络和一些基于Ubuntu的盒子。出于好奇心,我想检查两个盒子之间的速度。我对速度或任何事情都没有任何问题,这对我来说真的很奇怪。另外,如果有改进的余地,或者我有错误的配置,结果可能会让我知道。

那么你如何正确测试Ubuntu盒子之间的网络速度?

165
Jacob Schoen

我使用iperf。它是一种客户端服务器安排,您在一端以服务器模式运行它,并从另一端的另一台计算机连接到它。

两台机器都运行:

Sudo apt-get install iperf

我们将在其中一台机器上启动iperf服务器:

iperf -s

然后在另一台计算机上,告诉iperf作为客户端连接:

iperf -c <address of other computer>

在客户端计算机上,您将看到如下内容:

[email protected]:~$ 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传输一个千兆字节的零。

dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345

作为demod:

$ dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345
Connection to 10.10.0.2 12345 port [tcp/*] succeeded!
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 9.11995 s, 118 MB/s

时间由dd给出,但它应该足够准确,因为它只能输出管道将采取的速度。如果你对此不满意,你可以在time调用中包装整个内容。

请记住,结果是在mega bytes所以将它乘以8得到一个兆位 - 每秒速度。上面的演示以944mbps运行。

266
Oli

与Oli对iperf的推荐相同。只想添加几点:

  1. 还有一些Windows客户端可以跨平台进行测试。
  2. -t <seconds>更改测试长度。 -P <n>更改了同时连接的数量。例如,iperf -c [target IP] -P 10 -t 30一起测试10个连接30秒,并提供聚合结果以及10个单独的连接速度。
  3. 你不需要Sudo。您只需在 http://iperf.fr/ 下载二进制文件即可。它应该工作。使用wget下载它,使用chmod使其可执行,然后您可以直接运行二进制文件。它完美地运作。

我发现,使用默认设置,单个连接速度会有很大的波动。但是,通过3个以上的并行连接,我的千兆字节开关的结果更加一致。 (始终@ 910-920Mbps)

21
wujj123456

使用 这个脚本 您可以轻松测试您的机器和某个远程主机之间的连接速度。使用示例:

$ scp-speed-test.sh [email protected]_Host 80000
  • [email protected]_Host是您的目标主机(您必须具有对此主机的ssh访问权限)
  • 80000是测试文件的大致大小(以kbs为单位),将被接收到远程主机。这不是强制性的论点。
7
VeLKerr

如果要在较低级别测试以太网LAN,可以使用Etherate,这是一个免费的Linux CLI以太网测试工具:

https://github.com/jwbensley/Etherate

像iPerf这样的工具(非常好!)在混合中投入它,通过IP和TCP或UDP进行操作。通过以太网/ OSI第2层直接进行醚化测试。

4
jwbensley

还有一些其他Nice命令行工具可用于两台主机之间的带宽基准测试:

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
1
Everton

正如我在评论中最好的答案所指出的那样,解决方案不够好因为客户/服务器不是优化到...挤压每一点速度

我的解决方案

在两边做一个ramdisk(因此,你不受存储速度的限制,我建议你用ramfs而不是tmpfs,所以他们不会进行交换...只是注意不要留下至少512M的可用内存对于系统,这是必需的,如果你有千兆以太网,在这个速度甚至SSD可能会减慢速度)在服务器上安装Apache,然后创建一个链接到ramdisk,在ramdisk上创建几个大文件(100M-1G,你可以创建它们与dd来自/ dev/random或者如果你有一些副本,那么去客户端并使用高级下载程序下载它们(也就是那边的ramdisk),我使用了lftp

哦,差异是主要的,从iperf和9.5M/s netcat报告的75mbps

11.18M/s用我的解决方案:

1591129421 bytes transferred in 136 seconds (11.18M/s)
0
THESorcerer