調試慢速區域網路(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:
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 然後,經過幾個
rsync
s,我得到了這個:$ 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 項目,似乎仍然像以往一樣慢……