Ssh

調試慢速區域網路(ssh、nfs)文件傳輸

  • February 8, 2022

我有兩個連接到千兆交換機的 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:

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

同步:

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.42 MB/秒

由於 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 架構):

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) 應該很容易被網路匹配。文件傳輸怎麼這麼慢?

我希望提供的資訊足夠,有人可以幫助我找到瓶頸。

謝謝。

根據您獲得的數字,您的網路中似乎有些東西實際上並不是千兆位的。

使用 ethtool 或類似的東西來檢查每台機器網卡的速度。

檢查交換機並確保埠實際上以千兆速度處於活動狀態(如果交換機支持管理,請檢查 LED 或配置埠狀態)。

在客戶端之間執行 iperf 或備用。

最後,檢查 CPU 使用率——也許那裡有問題。

非常感謝這篇文章,我遇到了完全相同的問題……所以,我只想擴展:

似乎您的網路中的某些東西實際上不是千兆位的。

所以,事實證明,這可能是我筆記型電腦上的 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

…a 然後,經過幾個rsyncs,我得到了這個:

$ 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 項目,似乎仍然像以往一樣慢……

引用自:https://serverfault.com/questions/750930