让 mbuffer 更快

让 mbuffer 更快

我正在尝试通过 10 千兆网络连接尽可能快地传输文件。到目前为止,我一直使用 rsync 在网络上移动大型文件,但现在我正在尝试使用 mbuffer,因为我听说它更快。问题是,我没有获得预期的性能提升,特别是因为我在两台计算机之间使用了 10 千兆网络连接。

这些是我当前的 mbuffer 参数:

mbuffer -m 1G -s 512M -P 10 -i "$currentFile" | ssh $outputTarget "cat - > $outputDir/$filename" > $debugOut

有人能告诉我如何提高网络速度吗?我是 mbuffer 的新手,不知道哪些参数最适合我的情况。现在我用随机数制作了一个 1 GB 的文件,速度大约为 110 MiB/s。

答案1

这个答案可能对于帮助原帖者来说已经太晚了,所以以下内容是为了后人所用。

瓶颈可能与 mbuffer 无关,而是与数据通过 ssh 加密连接发送有关。换句话说,瓶颈是单线程 ssh 进程在发送主机上加密流量并在接收主机上解密流量的速度。

就您的目的而言,最好在发送方使用 mbuffer 的 -O 选项,在接收方使用 -I 选项。这样 mbuffer 会直接通过未加密的 TCP 管道发送数据,这将使您的网络承受操作系统、驱动程序和硬件所允许的最大压力。

这是一个两步过程,因为您需要在发送主机和接收主机上运行 mbuffer,如下所示:

  1. 首先,在接收器上运行mbuffer。它将监听 -I 选项指定的端口上的连接(5567 只是一个例子;选择您自己的端口号):

    ssh $outputTarget mbuffer -I 5567 \>$outputDir/$filename
    
  2. 然后在发送方发起转账:

    mbuffer -i "$currentFile" -O $outputTarget:5567
    

如上所述,在 $outputTarget 上运行的接收 mbuffer 进程将侦听并接受来自连接到该套接字的任何人的 TCP 连接,而不仅仅是来自在步骤 2 中启动的发送 mbuffer 进程。因此,您必须注意这样一个事实:以这种方式使用 mbuffer 时,它不如 ssh 安全,这不仅是因为没有数据加密,还因为无法确定预期的发送者是否是唯一启动与接收方监听端口的连接的人。除非有人对您的接收方进行端口扫描或以其他方式知道您在做什么并试图利用您,否则后一个警告很少会造成问题。另一方面,根据用例,缺乏加密很可能是一个大问题。

相关内容