通过网络(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 性能是限制因素,而不是网络带宽,因此压缩可能会使事情变得更糟。

相关内容