5.13 优化通过 WAN 连接的数据传输

您可以优化数据传输性能,并针对 WAN 连接对其进行微调。方法是修改系统从您对 PlateSpin 服务器主机 的配置工具所做的设置中读取到的配置参数。有关一般过程,请参见PlateSpin 配置

5.13.1 调整参数

使用文件传输配置参数设置可优化整个 WAN 内的数据传输。这些设置是全局的,会影响基于文件的所有复制和 VSS 复制。

注:如果修改了这些值,则高速网络(如千兆位以太网)的复制时间可能会受到负面影响。修改这其中的任意参数之前,请先考虑咨询 PlateSpin 支持部门。

表 5-4 列出了 PlateSpin 配置页面 (https://Your_PlateSpin_Server/platespinconfiguration/) 上控制文件传输速度的配置参数,以及默认值和最大值。您可以通过试错法修改这些值,以优化高延迟 WAN 环境中的操作。

表 5-4 文件传输配置参数的默认值和最佳值

参数

默认值

最大值

AlwaysUseNonVSSFileTransferForWindows2003

False

 

FileTransferCompressionThreadsCount

控制用于包级别数据压缩的线程数。如果禁用压缩,则此设置会被忽略。由于压缩是 CPU 密集型操作,所以该设置可能会影响性能。

2

不适用

FileTransferBufferThresholdPercentage

确定在创建并发送新的网络包之前至少必须缓冲的数据量。

10

 

FileTransferKeepAliveTimeOutMilliSec

指定 TCP 超时后等待多久才能发送保持连接讯息。

120000

 

FileTransferLongerThan24HoursSupport

True

 

FileTransferLowMemoryThresholdInBytes

确定服务器何时认为自身处于内存偏低的状态,这会导致系统增强部分网络行为。

536870912

 

FileTransferMaxBufferSizeForLowMemoryInBytes

指定在处于内存偏低的状态时使用的内部缓冲区大小。

5242880

 

FileTransferMaxBufferSizeInBytes

指定用于保留包数据的内部缓冲区大小。

31457280

 

FileTransferMaxPacketSizeInBytes

确定将发送的最大包。

1048576

 

FileTransferMinCompressionLimit

以字节为单位指定包级别的压缩阈值。

0(禁止)

最大值 65536 (64 KB)

FileTransferPort

3725

 

FileTransferSendReceiveBufferSize

定义复制网络中 TCP 连接的发送缓冲区和接收缓冲区的最大大小(以字节为单位)。缓冲区的大小会影响 TCP 接收窗口 (RWIN) 的大小,而该窗口大小规定了在未获得 TCP 确认的情况下可以发送的字节数。此设置对基于文件和基于块的传输都有影响。根据您的网络带宽和延迟来调整缓冲区大小可以提高吞吐量,减轻 CPU 处理负担。

当此值设为零(关闭)时,使用默认的 TCP 缓冲区大小 (8 KB)。要自定义大小,请以字节为单位指定大小。

使用以下公式来确定合适的值:

((以 Mbps 为单位的链路速度 / 8) * 延迟秒数)) * 1000 * 1024

例如,对于延时为 10 ms 的 100 Mbps 链路,合适的缓冲区大小为:

(100/8)*0.01*1024*1000 = 128000 字节

有关调整的信息,请参见调整 FileTransferSendReceiveBufferSize

0(8192 字节)

最大值 5242880 (5 MB)

FileTransferSendReceiveBufferSizeLinux

指定 Linux 文件传输连接的 TCP/IP 接收窗口 (RWIN) 大小设置。它控制未获得 TCP 确认的情况下发送的字节数(以字节为单位)。

当此值设为零(关闭)时,Linux 对应的 TCP/IP 缓冲区大小值根据 FileTransferSendReceiveBufferSize 设置自动计算得出。如果两个参数都设为零(关闭),则默认值为 248 KB。要自定义大小,请以字节为单位指定大小。

注:在以前的发行版本中,您需要将此参数设为目标值的 1/2,但现在不再需要如此。

0(253952 字节)

 

FileTransferShutDownTimeOutInMinutes

1090

 

FileTransferTCPTimeOutMilliSec

设置 TCP 发送超时值和 TCP 接收超时值。

30000

 

PostFileTransferActionsRequiredTimeInMinutes

60

 

5.13.2 调整 FileTransferSendReceiveBufferSize

FileTransferSendReceiveBufferSize 参数定义复制网络中 TCP 连接的发送缓冲区和接收缓冲区的最大大小(以字节为单位)。缓冲区的大小会影响 TCP 接收窗口 (RWIN) 的大小,而该窗口大小规定了在未获得 TCP 确认的情况下可以发送的字节数。此设置对基于文件和基于块的传输都有影响。根据您的网络带宽和延迟来调整缓冲区大小可以提高吞吐量,减轻 CPU 处理负担。

您可以通过调整 FileTransferSendReceiveBufferSize 参数来优化复制网络中从源服务器到目标服务器的块传输或文件传输。请在 PlateSpin 配置页面 (https://Your_PlateSpin_Server/PlateSpinConfiguration/) 上设置该参数。

要计算最佳缓冲区大小:

  1. 确定源服务器与目标服务器之间的延时(延迟)。

    目的是尽可能准确地确定大小接近 MTU 的包的延时。

    1. 以管理员用户身份登录源服务器。

    2. 在命令提示符处输入以下命令:

      # ping <target-server-ip-address> -f -l <MTU_minus_28> -n 10

      通常,ping-l 选项会在 target-server-ip-address 的指定有效负载的报头中增加 28 个字节。因此,建议从 MTU - 28 个字节的大小开始尝试。

    3. 反复修改有效负载并重新输入步骤 1.b 中的命令,直至系统显示以下讯息:

      需要为数据包分段

    4. 记下延时秒数。

      例如,如果延时为 35 毫秒,则请记下 0.035 作为延时。 

  2. 计算以字节为单位的初始缓冲区大小:

    缓冲区大小 = (以 Mbps 为单位的带宽/8) * 延时秒数 * 1000 * 1024

    网络带宽采用二进制值,即 10 Gbps = 10240 Mbps,1 Gbps = 1024 Mbps。

    例如,当某个 10 Gbps 网络的延时为 35 毫秒时,计算如下:

    缓冲区大小 = (10240 / 8) * 0.035 * 1000 * 1024 = 45875200 字节
  3. (可选)以最大分段大小 (MSS) 的整数倍做为最佳缓冲区大小。

    1. 确定 MSS:

      MSS = MTU 的字节数 - (IP 报头大小 + TCP 报头大小) 

      IP 报头大小为 20 字节。TCP 报头大小为 20 字节 + timestamp 等选项的字节数。

      例如,如果 MTU 的大小为 1470,那么 MSS 通常为 1430。

      MSS = 1470 字节 - (20 字节 + 20 字节) = 1430 字节
    2. 计算最佳缓冲区大小:

      最佳缓冲区大小 = (roundup(缓冲区大小/MSS)) * MSS

      以上面的数值为例:

      最佳缓冲区大小 = (roundup(45875200 / 1430)) * 1430 
                   = 32081 * 1430 
                   = 45875830

      取整时要向上舍入,而非向下舍入,因为向下舍入所得的 MSS 倍数会小于缓冲区大小 45875200:

      非最佳缓冲区大小 = 32080 * 1430 = 45874400