透過網路(RSH 和 SSH)優化管道效能的方法

透過網路(RSH 和 SSH)優化管道效能的方法

考慮在具有遠端 shell (RSH) 的遺留系統中透過管道網路進行資料傳輸,例如:

rsh host -l user tar -cf - /home/dir \| compress | uncompress | tar -xvf -

以及「現代」系統中的這個:

ssh user@host tar -cf - /home/dir \| gzip | ungzip | tar -xvf -

效能問題:

我在使用 RSH 在 AIX 4.3 到 AIX 5.3 之間運行傳輸時遇到了非常糟糕的效能。即使有空閒卡 (10/100) 透過空閒交換器連接它們,我也獲得了約 350Kbps 傳輸 5.4GB 的效能。

當在 AIX 5.3 和 Linux 之間運行此傳輸時,但現在使用 SSH 和 gzip,性能好多了,但從未達到網路容量(在 1 Gigabit LAN 中,我得到的平均約為 400Mbps)。

有沒有辦法優化網路管道效能,可能是自訂管道緩衝區或網路區塊/緩衝區,或是什麼?

答案1

我認為你受到的是 CPU 限製而不是頻寬限制,至少在 ssh 部分是這樣。

我在兩台閒置伺服器之間使用 scp (ssh cp) 來獲得大約 45-50 MB/s 的速度,因為伺服器上的加密/解密是限制因素。添加 gzip / ungzip,您可能會進一步下降,具體取決於可用核心的數量。

未壓縮和未加密的傳輸具有更好的數字。您可以嘗試不使用壓縮命令,看看效果如何。

答案2

您是否進行了基本速度測試以排除壓縮和磁碟 I/O 的可能性?

這很容易做到,透過 ftp 從受影響的主機之一連接到另一台主機,然後運行,
put "|dd if=/dev/zero bs=1M count=1000″ /dev/null
將從一側的/dev/zero 讀取1GB 並將其寫入另一側的/dev/null ,這會測試純網路頻寬。這有更詳細的描述,例如
AIXChange 部落格:衡量網路效能的兩種方法

對於透過 scp 的傳輸,您可以嘗試使用要求較低的流密碼 (RC4) via-o Cipher=arcfour ...作為 scp 的選項來減少加密。

也可以看看一個相關的問題建議使用-C來啟用壓縮,儘管根據我對您的情況的理解,CPU 效能是限制因素,而不是網路頻寬,因此壓縮可能會讓事情變得更糟。

相關內容