在 Oracle® Solaris 11.2 中管理 TCP/IP 网络、IPMP 和 IP 隧道

退出打印视图

更新时间: 2014 年 7 月
 
 

更改 TCP 接收缓冲区大小

TCP 接收缓冲区大小是通过使用 TCP 属性 recv_buf 来设置的,缺省情况下为 128 KB。但是,应用程序不会均匀地使用可用带宽。因此,如果出现连接延迟,就可能会要求您更改缺省大小。例如,使用 Oracle Solaris 的安全 Shell 功能会产生带宽使用开销,因为有其他校验和与加密进程在数据流上执行。因此,可能需要增加缓冲区大小。同样,为使执行批量传输的应用程序能有效使用带宽,也需要进行相同的缓冲区大小调整。

通过估算带宽延迟乘积 (bandwidth delay product, BDP),可以计算要使用的正确接收缓冲区大小。要计算 BDP,请将可用带宽乘以连接延迟的值。

使用 ping –s host 命令可获取连接延迟的值。

合适的接收缓冲区大小接近 BDP 的值。但是,带宽使用情况还取决于各种条件。共享基础结构或争用带宽的应用程序和用户的数量可能会影响该估算值。

按照以下方式更改缓冲区大小的值:

# ipadm set-prop -p recv_buf=value tcp

以下示例显示了如何将缓冲区大小增加到 164 KB:

# ipadm show-prop -p recv_buf tcp
PROTO PROPERTY   PERM CURRENT   PERSISTENT   DEFAULT  POSSIBLE
tcp   recv_buf   rw   128000       --        128000   2048-1048576

# ipadm set-prop -p recv_buf=164000 tcp

# ipadm show-prop -p recv_buf tcp
PROTO PROPERTY   PERM CURRENT   PERSISTENT   DEFAULT  POSSIBLE
tcp   recv_buf   rw   164000    164000       128000   2048-1048576

缓冲区大小没有任何设置值是最佳的,因为最佳大小随具体情况而不同。请考虑以下示例,其中为特定条件下的每种网络设置了不同的 BDP 值:

典型的 1 Gbps 局域网 (local area network, LAN),其中缓冲区大小的缺省值为 128 KB:
BDP = 128 MBps * 0.001 s = 128 kB
理论上的 1Gbps 广域网 (wide area network, WAN),有 100 毫秒的延迟:
BDP = 128 MBps * 0.1 s = 12.8 MB
欧洲到美国链路(带宽由 uperf 测量)
BDP = 2.6 MBps * 0.175 = 470 kB

    如果无法计算 BDP,请使用以下指导:

  • 对于通过 LAN 的批量传输,缓冲区大小缺省值 (128 KB) 已够用。

  • 对于大部分 WAN 部署,接收缓冲区大小应在 2 MB 范围内。


Caution

注意  -  增加 TCP 接收缓冲区大小的同时会增加许多网络应用程序的内存资源占用。