调试慢速局域网(ssh、nfs)文件传输

调试慢速局域网(ssh、nfs)文件传输

我有两个 Linux 盒子连接到千兆交换机。它们都有千兆网卡,电缆是 cat7。

使用 iperf 测试网络显示连接速度很快,但使用 rsync、scp 或 nfs 共享传输文件速度很慢。

我正在使用一个 1GB 的文件进行测试。

iperf 结果:

Client connecting to odroid, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.1.26 port 58788 connected with 192.168.1.32 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   979 MBytes   821 Mbits/sec

使用 rsync、scp 或 nfs 的传输速度大约为 13Mb/s

SCP-007:

 scp bigfile odroid:/mnt/usb1/               [10:19:12]
bigfile                                        57%  590MB  12.2MB/s   00:35 ETA^CKilled by signal 2.

rsync:

 rsync --progress bigfile /mnt/usb1/
bigfile
     44,695,552   4%   12.15MB/s    0:01:11  ^C

网络文件系统 (NFS):

binaryplease➜~(master✗)» time cp bigfile /mnt/nfs/usb1/      
cp -i bigfile /mnt/nfs/usb1/  0.01s user 0.94s system 1% cpu 1:11.06 total

1024MB/71秒=14.42MB/秒

由于 iperf 测试显示网络连接速度很快,因此我假设存储设备速度慢存在问题,但事实似乎并非如此:

客户端,SSD,内部:

binaryplease➜~(master✗)» sudo hdparm -tT /dev/sda                    
/dev/sda:
 Timing cached reads:   20344 MB in  2.00 seconds = 10181.50 MB/sec
 Timing buffered disk reads: 1498 MB in  3.00 seconds = 498.98 MB/sec

binaryplease➜~(master✗)» dd if=/dev/zero of=test oflag=direct bs=8M count=64
64+0 records in
64+0 records out
536870912 bytes (537 MB) copied, 2.03861 s, 263 MB/s

binaryplease➜~(master✗)» dd if=test of=/dev/null iflag=direct bs=8M  [12:29:01]
64+0 records in
64+0 records out
536870912 bytes (537 MB) copied, 1.11392 s, 482 MB/s

服务器,USB 3.0 驱动器,外部:

➜  ~ git:(master) ✗ sudo hdparm -tT /dev/sda   
/dev/sda:
 Timing cached reads:   1980 MB in  2.00 seconds = 991.66 MB/sec
 Timing buffered disk reads: 266 MB in  3.01 seconds =  88.27 MB/sec
➜  usb1   dd if=/dev/zero of=test oflag=direct bs=8M count=64
64+0 records in
64+0 records out
536870912 bytes (537 MB) copied, 6.53386 s, 82.2 MB/s
➜  usb1  dd if=test of=/dev/null iflag=direct bs=8M
64+0 records in
64+0 records out
536870912 bytes (537 MB) copied, 7.13567 s, 75.2 MB/s

客户端操作系统(Linux arch):

Linux binaryplease-laptop 4.3.3-2-ARCH #1 SMP PREEMPT Wed Dec 23 20:09:18 CET 2015 x86_64 GNU/Linux

服务器上的操作系统(odroid 的 Ubuntu 服务器):

Linux odroid 3.10.92 #1 SMP PREEMPT Tue Nov 17 00:15:24 BRST 2015 armv7l armv7l armv7l GNU/Linux

这两个系统均未出现 CPU 或 RAM 超载的情况。

如果我正确解读了结果,服务器驱动器的写入速度(82.2 MB/s)应该很容易与网络匹配。文件传输怎么这么慢?

我希望提供的信息足够并且有人可以帮助我找到瓶颈。

谢谢。

答案1

从您得到的数字来看,似乎您的网络中某些东西实际上并不是千兆位。

使用 ethtool 或类似工具检查每台机器 NIC 的速度。

检查交换机并确保端口确实以千兆速度活动(如果交换机支持管理,请检查 LED 或配置端口状态)。

运行 iperf 或客户端之间的替代程序。

最后,检查 CPU 使用率 - 也许那里出了问题。

答案2

非常感谢这篇文章,我遇到了完全相同的问题......所以,我只想扩展一下:

看来您的网络中有些东西实际上并不是千兆位。

所以,事实证明,问题出在我笔记本电脑上的 Wi-Fi 适配器上。

首先,我寻找检查网络适配器速度的方法,并咨询了https://www.systutorials.com/how-to-find-a-wireless-network-adapters-speed-in-linux/- 它建议ethtool,但这对无线网络适配器不起作用。

然后我发现:

因此,我有:

$ iwconfig wlp3s0 | grep Rate
          Bit Rate=270 Mb/s   Tx-Power=15 dBm  

$ rsync -aP /nfsshare/test.zip .
sending incremental file list
test.zip
     51,412,992  17%   12.16MB/s    0:00:19  ^C

然后我尝试:

$ sudo iw dev wlp3s0 get power_save
Power save: on

$ sudo iw dev wlp3s0 set power_save off
$ sudo iw dev wlp3s0 get power_save
Power save: off

...然后,过了几秒钟rsync,我得到了这个:

$ rsync -aP /nfsshare/test.zip .
sending incremental file list
test.zip
    292,988,598 100%  259.41MB/s    0:00:01 (xfr#1, to-chk=0/1)

不确定是否有东西在此过程中被缓存,但这些数字给我留下了深刻的印象。

再说,git status在同一台 PC/笔记本电脑上,对于同一个 NFS 共享中的 git 项目,似乎仍然像以前一样慢......

相关内容